Флаттер: Именованный параметр «Цвет переднего плана» не определен

#flutter #dart

Вопрос:

Я работаю над учебными пособиями «Напиши свое первое приложение Flutter» и без проблем перешел к части 2, шагу 7. Однако на линии:

 foregroundColor: Colors.black,
 

VSCode подчеркивает foregroundColor и говорит:

 The named parameter 'foregroundColor' isn't defined
 

Он не изменил цвет после горячей перезагрузки, и он не будет создаваться с ошибкой, говорится в консоли отладки:

 lib/main.dart:17
        foregroundColor: Colors.black,
        ^^^^^^^^^^^^^^^
: Context: Found this candidate, but the arguments don't match.
../…/material/theme_data.dart:219
  factory ThemeData({
          ^
 

Вот полный build виджет (в MyApp классе):

 Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Startup Name Generator',
      theme: ThemeData(
        backgroundColor: Colors.white,
        foregroundColor: Colors.black,
      ),
      home: RandomWords(),
    );
  }
 

Обновить:
У меня не было

 appBarTheme: const AppBarTheme(
    //themes here
),
 

внутри ThemeData , как показал учебник. После добавления он работает!

Ответ №1:

Данные темы Flutter не предоставляют атрибут переднего плана. Но данные appBarThemeData обеспечивают это. Подобный этому

  theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        backgroundColor: Colors.red,
        appBarTheme: const AppBarTheme(foregroundColor: Colors.red),

        primarySwatch: Colors.blue,
      ),
 

Ответ №2:

Я думаю, вы имеете в виду эту кодовую таблицу. https://codelabs.developers.google.com/codelabs/first-flutter-app-pt2#6

Не волнуйся, здесь какая — то ошибка. Я уже сообщал об этом. В текущем классе ThemeData нет атрибута с именем Цвет переднего плана.

Также теперь команда flutter предлагает использовать ColorScheme для определения цветов для приложения. Вот пример того же самого.

 theme: ThemeData(
  colorScheme: ColorScheme.light(
    primary: Colors.blue,
    secondary: Colors.red,
    background: Colors.white,
  ),
  appBarTheme: AppBarTheme(
      backgroundColor: Colors.white,
      elevation: 0,
      iconTheme: IconThemeData(color: AppColor.primaryColor)),
  scaffoldBackgroundColor: Colors.white);