Flutter主题FlatButton在ButtonBar中的textColor

Thi*_*men 5 themes flutter flutter-layout

将Flutter升级到版本后:[?] Flutter(Channel master,v0.10.2-pre.82)

primaryColor已从我的FlatButton中消失。

小部件:

new ButtonTheme.bar(
        // make buttons use the appropriate styles for cards

        child: new ButtonBar(
          children: <Widget>[
            new FlatButton(
              child: const Text('DISMISS'),
              onPressed: () {/* ... */},
            ),
            new FlatButton(
              child: const Text('LEARN MORE'),
              onPressed: () {/* ... */},
            ),
          ],
        ),
      ),
Run Code Online (Sandbox Code Playgroud)

主题:

final originalTextTheme = ThemeData.light().textTheme;
final originalButtonTheme = ThemeData.light().buttonTheme;    
final originalBody1 = originalTextTheme.body1;

    return ThemeData.light().copyWith(
        primaryColor: Colors.green[700],
        accentColor: Colors.green[500],
        buttonColor: Colors.grey[800],
        buttonTheme: originalButtonTheme,
        textTheme: originalTextTheme.copyWith(
            body1:
                originalBody1.copyWith(decorationColor: Colors.transparent))); 
Run Code Online (Sandbox Code Playgroud)

如何为FlatButtons的textColor设置主题?

Nea*_*arl 3

如果您希望您的FlatButtontextColor相同ThemeData.primaryColor,您也需要设置ColorScheme.primary相同的值。

const primaryColor = Colors.deepOrange;

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: primaryColor,
        colorScheme: ColorScheme.light(
          primary: primaryColor, // -------> This will be your FlatButton's text color
        ),
        accentColor: Colors.amber,
      ),
      title: 'YourAwesomeApp',
      home: Scaffold(
        body: PageWithFlatButtons(),
      ),
    );
  }
}

class PageWithFlatButtons extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      alignment: Alignment.center,
      child: ButtonBar(
        alignment: MainAxisAlignment.center,
        children: <Widget>[
          new FlatButton(
            child: const Text('DISMISS'),
            onPressed: () {},
          ),
          new FlatButton(
            child: const Text('LEARN MORE'),
            onPressed: () {},
          ),
        ],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)