“ThemeData”中的“primaryColor”属性在Flutter中不起作用

bzzcjhmw  于 2022-12-24  发布在  Flutter
关注(0)|答案(6)|浏览(376)

我目前正在研究如何在Flutter应用程序中使用ThemeData。它应该可以与下面的代码一起工作,但是颜色主题没有按预期应用。
奇怪的是,使用"primarySwatch"选项而不是"primaryColor"选项会按预期应用主题。
执行环境是Windows10上的Chrome,都没有应用暗主题,另外,在真实机器的Android11环境和虚拟环境中,结果是相同的。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primaryColor: Colors.purple), // This "primaryColor" option does not working.
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Test App'),
        ),
        body: Container(),
      ),
    );
  }
}

下面是我的Flutter环境。

Flutter 2.5.1 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ffb2ecea52 (5 days ago) • 2021-09-17 15:26:33 -0400
Engine • revision b3af521a05
Tools • Dart 2.14.2

我在代码中犯了什么错误?
谢谢你的帮助。

eivnm1vs

eivnm1vs1#

在Flutter的最新版本中,ThemeData中的primaryColoraccentColor不起作用是正确的。相反,您应该使用ThemeData的新colorScheme属性。

ThemeData(colorScheme: ColorScheme(
  primary: Colors.blue,
  primaryVariant: Colors.red,
  secondary: Colors.green,
  // all fields should have a value
));

参见the reference here
要了解要为变量等选择的值,请查看材料设计规格。

6ovsh4lw

6ovsh4lw2#

最好的方法来设置主题,使它sperate文件的主题和调用主文件和原色是为我工作theme: ThemeData(),就像你也可以设置主题的图标,也可以设置主题的文本。

import 'package:flutter/material.dart';
    ThemeData appthemedata(BuildContext context)
    {
      return ThemeData(
        primaryColor:appcolor,
        // scaffoldBackgroundColor: Colors.white,
        appBarTheme: AppBarTheme(
            centerTitle: true,
            elevation: 0,
            textTheme: TextTheme(headline1: AppBarTextStyle )
        ),
        textTheme: TextTheme(
    
          headline1: TitleTextStyle,
          bodyText1:Body1TextStyle,
        ),
        iconTheme: IconThemeData(
          color:Colors.white,
          size: 17,
        ),
      );
    }
vnzz0bqm

vnzz0bqm3#

我不认为所有东西都像这样被弃用:

scaffoldBackgroundColor: Color(0x0FF0A0E21),    // just an example 
// works perfectly.

此颜色将应用于身体部位。

9ceoxa92

9ceoxa924#

MaterialApp(
      theme: ThemeData.dark().copyWith(
        scaffoldBackgroundColor: Color(0xFF090C22), // for scaffold background
        colorScheme: ColorScheme.light().copyWith( // to use the primaryColor
          primary: Colors.red,
        ),
      ),
    );
h9a6wy2h

h9a6wy2h5#

仍然不工作,但我使用appBarTheme更改了appbar颜色

return MaterialApp(
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
  //primaryColor: const Color(0xFF0A0E21),// not working
    scaffoldBackgroundColor: Color(0xFF0A0E21),
   appBarTheme: AppBarTheme(
    backgroundColor: Color(0xFF0A0E21),),
    textTheme: const TextTheme(
  bodyText2: TextStyle(color: Colors.white)

    ),
  ),
dauxcl2d

dauxcl2d6#

使用

theme: ThemeData(
      colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.amber),
  )

相关问题