Как управлять цветами во Flutter - PullRequest
1 голос
/ 06 мая 2020

Я хочу изменить цвет страницы на черный в main.dart. Я также хочу, чтобы цвет фона других моих страниц был черным.

Однако другие компоненты на страницах 1-3, такие как TextFormField border, имеют черный цвет. Это сделает его непобедимым, потому что цвет фона черный. Как я могу изменить цвет границы TextFormField, когда мой фоновый цвет черный?

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Определите класс AppTheme с переменной c stati.

class AppTheme {
static Color backgroundColor = Colors.black ;
static Color textFieldBorderColor = Colors.white ;
}

используйте AppTheme.backgroundColor для предоставления ThemeData

main.dart
 MaterialApp
   ThemeData(
     scaffoldBackgroundColor: AppTheme.backgroundColor,
   )
   home: Scaffold
     body: Page01

и AppTheme.textFieldBorderColor для предоставления цвета границы текстового поля

decoration: InputDecoration(
  color: AppTheme.textFieldBorderColor,
),
0 голосов
/ 06 мая 2020

Один из способов сделать это - установить переменную в вашем SharedPreferences, чтобы ваше приложение знало, когда вы хотите изменить цвет фона main.dart's на черный или нет. SharedPreferences сохраняет это значение в локальном хранилище, чтобы запомнить ваши предпочтения даже после закрытия приложения. Не забудьте импортировать пакет SharedPreferences: https://pub.dev/packages/shared_preferences# -readme-tab-

Вы можете установить переменную в SharedPreferences следующим образом:

var prefs = await SharedPreferences.getInstance(); //instantiate shared preferences
prefs.setBool("key",false) //set a boolean using key value pairs

После этого вы должны получить значение, вызвав функцию, предпочтительно в initState ()

bool bg_gray=false; //place this on top of widget build
getValue() async{
 if (prefs.getBool("key") == null){ //retrieve the value
     bg_grey=false;
 }
 bg_gray=prefs.getBool("key");//retrieve the value
}

Теперь, когда вы получили свое значение, просто используйте тернарные операторы, чтобы установить цвет вашего TextFormField цвет фона

decoration: InputDecoration(
  color: bg_gray? Colors.white:Colors.grey,
),
...