Ich versuche, die Farbe der Statusleiste in Weiß zu ändern. Ich fand diese Kneipe beim Flattern. Ich habe versucht, den Beispielcode für meine Dartdateien zu verwenden.
dart
flutter
flutter-layout
flutter-dependencies
Mohamed Hassan
quelle
quelle
flutter_statusbarcolor
Farbe für jedesAppBar
manuell verwenden oder einstellenNur Android (mehr Flexibilität):
import 'package:flutter/services.dart';
Danach müssen Sie folgende Zeilen hinzufügen (der bessere Ort, um diese Zeilen einzufügen, liegt in Ihrer
main()
Methode).void main() { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( systemNavigationBarColor: Colors.blue, // navigation bar color statusBarColor: Colors.pink, // status bar color )); }
Sowohl iOS als auch Android:
appBar: AppBar( backgroundColor: Colors.red, // status bar color brightness: Brightness.light, // status bar brightness )
quelle
brightness
, wobeiBrightness.light
schwarze Textfarbe undBrightness.dark
weiße angezeigt werden .Anstelle des häufig vorgeschlagenen
SystemChrome.setSystemUIOverlayStyle()
systemweiten Dienstes, der nicht auf einer anderen Route zurückgesetzt wird, können SieAnnotatedRegion<SystemUiOverlayStyle>
ein Widget verwenden, das nur für das von Ihnen umschlossene Widget wirksam ist.quelle
Für diejenigen, die verwenden
AppBar
Wenn Sie verwenden,
AppBar
ist das Aktualisieren der Statusleistenfarbe so einfach:Scaffold( appBar: AppBar( // Use Brightness.light for dark status bar // or Brightness.dark for light status bar brightness: Brightness.light ), body: ... )
So bewerben Sie sich für alle App-Leisten:
return MaterialApp( theme: Theme.of(context).copyWith( appBarTheme: Theme.of(context) .appBarTheme .copyWith(brightness: Brightness.light), ... ),
Für diejenigen, die nicht verwenden
AppBar
Verpacken Sie Ihre Inhalte mit
AnnotatedRegion
und stellen Sie siestatusBarIconBrightness
für Android undstatusBarBrightness
iOS ein:return AnnotatedRegion<SystemUiOverlayStyle>( value: const SystemUiOverlayStyle( // For Android. // Use [light] for white status bar and [dark] for black status bar. statusBarIconBrightness: Brightness.light, // For iOS. // Use [dark] for white status bar and [light] for black status bar. statusBarBrightness: Brightness.dark, ), child: Scaffold(...), );
quelle
brightness: Theme.of(context).brightness
value: SystemUiOverlayStyle.light
(oder.dark
) macht das GleicheImportieren Sie dies zuerst
import 'package:flutter/services.dart';
Verwenden Sie nun den folgenden Code, um die Farbe der Statusleiste in Ihrer Anwendung zu ändern, wenn Sie die nicht verwenden
AppBar
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark.copyWith( statusBarColor: AppColors.statusBarColor,/* set Status bar color in Android devices. */ statusBarIconBrightness: Brightness.dark,/* set Status bar icons color in Android devices.*/ statusBarBrightness: Brightness.dark)/* set Status bar icon color in iOS. */ );
Scaffold( body: Container( color: Colors.red, /* Set your status bar color here */ child: SafeArea(child: Container( /* Add your Widget here */ )), ), );
quelle
Ich kann nicht direkt im Thread kommentieren, da ich noch nicht den erforderlichen Ruf habe, aber der Autor hat Folgendes gefragt:
Für alle anderen, die zu diesem Thread kommen, ist hier, was für mich funktioniert hat. Die Textfarbe der Statusleiste wird durch die Helligkeitskonstante in bestimmt
flutter/material.dart
. Um dies zu ändern, passen Sie dieSystemChrome
Lösung wie folgt an, um den Text zu konfigurieren:Ihre möglichen Werte für
Brightness
sindBrightness.dark
undBrightness.light
.Dokumentation: https://api.flutter.dev/flutter/dart-ui/Brightness-class.html https://api.flutter.dev/flutter/services/SystemUiOverlayStyle-class.html
quelle
Das hat bei mir funktioniert:
Service importieren
import 'package:flutter/services.dart';
Dann füge hinzu:
@override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: Colors.white, statusBarBrightness: Brightness.dark, )); return MaterialApp(home: Scaffold(
quelle
Ich denke, das wird dir helfen:
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( systemNavigationBarColor: Colors.white, // navigation bar color statusBarColor: Colors.white, // status bar color statusBarIconBrightness: Brightness.dark, // status bar icons' color systemNavigationBarIconBrightness: Brightness.dark, //navigation bar icons' color ));
quelle
Dies ist alles, was Sie wissen müssen:
import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; void main() { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( systemNavigationBarColor: Colors.amber, // navigation bar color statusBarColor: Colors.white, // status bar color statusBarIconBrightness: Brightness.dark, // status bar icon color systemNavigationBarIconBrightness: Brightness.dark, // color of navigation controls )); runApp(MyApp()); }
quelle
Dies kann in 2 Schritten erreicht werden:
AppBar.brightness
Eigenschaft einWenn Sie eine haben
AppBar
:@override Widget build(BuildContext context) { FlutterStatusbarcolor.setStatusBarColor(Colors.white); return Scaffold( appBar: AppBar( brightness: Brightness.light, // Other AppBar properties ), body: Container() ); }
Wenn Sie die App-Leiste nicht auf der Seite anzeigen möchten:
@override Widget build(BuildContext context) { FlutterStatusbarcolor.setStatusBarColor(Colors.white); return Scaffold( appBar: AppBar( brightness: Brightness.light, elevation: 0.0, toolbarHeight: 0.0, // Hide the AppBar ), body: Container() }
quelle
auf dem main.dart Dateiimportdienst wie folgt
import 'package:flutter/services.dart';
und innerhalb der Erstellungsmethode fügen Sie einfach diese Zeile vor der Rückkehr hinzu
So was:
@override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: CustomColors.appbarcolor )); return MaterialApp( home: MySplash(), theme: ThemeData( brightness: Brightness.light, primaryColor: CustomColors.appbarcolor, ), ); }
quelle
Dieser wird auch funktionieren
quelle
return Scaffold( backgroundColor: STATUS_BAR_COLOR_HERE, body: SafeArea( child: scaffoldBody(), ), );
quelle
um es wie Ihre App-Leistenfarbe zu machen
import 'package:flutter/material.dart'; Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( statusBarColor: Colors.transparent, systemNavigationBarColor: Colors.transparent, )); }
quelle
Dies ist bei weitem der beste Weg, es werden keine zusätzlichen Plugins benötigt.
Widget emptyAppBar(){ return PreferredSize( preferredSize: Size.fromHeight(0.0), child: AppBar( backgroundColor: Color(0xFFf7f7f7), brightness: Brightness.light, ) ); }
und nenne es in deinem Gerüst so
return Scaffold( appBar: emptyAppBar(), . . .
quelle
@override Widget build(BuildContext context) { return Theme( data: ThemeData(brightness: Brightness.dark), child: Scaffold() .... ) }
quelle
Ich hatte Probleme mit allen genannten Antworten, außer mit der Lösung, die ich selbst gemacht habe:
Container(width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).padding.top, color: Colors.green)
Für Ansichten, in denen keine AppBar hinzugefügt wurde, verwende ich nur einen Container mit Hintergrund, dessen genaue Höhe der Höhe der Statusleiste entspricht. In diesem Szenario kann jede Ansicht eine andere Statusfarbe haben und ich muss mir keine Sorgen machen und über eine Logik nachdenken, dass irgendwie falsche Ansichten irgendwie falsche Farben haben.quelle
Keine der vorhandenen Lösungen hat mir geholfen, da ich sie nicht verwende
AppBar
und keine Aussagen machen möchte, wenn der Benutzer das App-Thema wechselt. Ich brauchte einen reaktiven Weg, um zwischen dem hellen und dem dunklen Modus zu wechseln, und stellte fest, dassAppBar
ein WidgetSemantics
zum Einstellen der Farbe der Statusleiste verwendet wird.Grundsätzlich mache ich das so:
return Semantics( container: false, // don't make it a new node in the hierarchy child: AnnotatedRegion<SystemUiOverlayStyle>( value: SystemUiOverlayStyle.light, // or .dark child: MyApp(), // your widget goes here ), );
Semantics
wird aus importiertpackage:flutter/material.dart
.SystemUiOverlayStyle
wird aus importiertpackage:flutter/services.dart
.quelle
Funktioniert sowohl für iOS als auch für Android
import 'package:flutter/services.dart'; @override Widget build(BuildContext context) { SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark); return Scaffold(); }
quelle
Ich habe es gelöst, indem ich die gesamte Hintergrundfarbe wie folgt geändert habe:
Im Hauptbildschirm:
Gerüst zurückgeben (
);
quelle
Was Sie wollen, sind Themen. Sie sind viel wichtiger als die AppBar-Farbe.
https://flutter.io/cookbook/design/themes/
quelle