5

我在 LinkedIn Learning 上关注 London App Brewery 的 BMI Calculator 应用程序。当尝试将 primaryColor 设置为红色时,即使我覆盖 Primary Color,我的模拟器仍会显示 Light Blue 默认 AppBar。这是代码

    import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primaryColor: Colors.red,
      ),
      home: const InputPage(),
    );
  }
}

class InputPage extends StatefulWidget {
  const InputPage({Key? key}) : super(key: key);

  @override
  _InputPageState createState() => _InputPageState();
}

class _InputPageState extends State<InputPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('BMI CALCULATOR'),
      ),
      body: const Center(
        child: Text('Body Text'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        child: const Icon(Icons.add),
      ),
    );
  }
}
4

7 回答 7

10

使用primarySwatch

theme: ThemeData(
    primarySwatch: Colors.red,
  ),
于 2021-09-13T21:34:30.183 回答
2

我也在 LondonAppBrewery 参加同样的培训。这段代码解决了这个问题。

Widget build(BuildContext context) {
return MaterialApp(
  title: "BMI Calculator",
  debugShowCheckedModeBanner: false,
  theme: ThemeData.dark().copyWith(
    appBarTheme:AppBarTheme(
      backgroundColor: Color(0xff0a0e21),
    ),
    scaffoldBackgroundColor: Color(0xff0a0e21),
  ),
  home: InputPage(),
);
于 2021-11-01T06:43:43.610 回答
1

我正在接受相同的培训计划。正如上面提到的 Mohtashim,我尝试调整后台应用程序主题代码,它按预期工作。

theme: ThemeData(
  primarySwatch: Colors.pink,
  appBarTheme: AppBarTheme(
    backgroundColor: Color(0xFF101427), //use your hex code here
  ),
)
于 2021-10-21T14:17:11.460 回答
1

使用以下方法,您可以完全控制 Themedata 中的各个属性

class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.pink,
        appBarTheme: AppBarTheme(
          backgroundColor: Colors.orangeAccent,
        ),
      ),
      home: InputPage(),
    );
  }
}

在此处输入图像描述

于 2021-09-24T15:48:16.697 回答
0
theme: ThemeData.dark().copyWith(
        colorScheme: ColorScheme.light(
          primary: Color(0xFF0A0E21),
        ),
        scaffoldBackgroundColor: Color(0xFF0A0D22),
      ),
于 2021-11-06T12:55:06.960 回答
0

此问题已在颤振github页面上指出。他们说

我们最终会将所有组件从 ThemeData.primaryColor 移走

所以你可以使用

 theme: ThemeData(
     colorScheme: ColorScheme.light().copyWith(primary: Colors.red),
 );
于 2022-02-13T22:14:37.540 回答
0

你可以使用:

    theme: ThemeData(
        colorScheme: ColorScheme.fromSwatch(
          primarySwatch: Colors.red,
        )
    )
于 2021-12-18T16:44:51.853 回答