dart 如何为整个应用程序编程更改Scaffold小部件的背景色

dm7nw8vv  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(171)

我是Flutter应用程序开发的新手,遇到了一个问题。我的应用程序包含大约5-6个屏幕,所有屏幕都包含这样的Scaffold小部件。

@override
      Widget build(BuildContext context) {

return Scaffold(
 backgroundColor: const Color(0xFF332F43)
);
}

现在在所有的屏幕上,我有相同的概念和设计,像这样,所有的屏幕将共享相同的背景颜色。现在我有一个按钮,在所有的屏幕上,即更改主题按钮,并在该按钮上单击更改主题按钮,我想改变所有的屏幕支架小部件要改变。现在我如何才能实现这一点?请帮助我在我的问题。

2g32fytz

2g32fytz1#

Flutter具有预定义的方式来更改应用程序中支架的背景颜色。
只需在main.dart(主文件)内的MaterialApp Widget中更改即可。

MaterialApp(
      title: 'Flutter',
      theme: ThemeData(
          scaffoldBackgroundColor: const Color(0xFF332F43),
           ),
      );
am46iovg

am46iovg2#

Color color = Colors.blue; // make it at root level

void main() {
  runApp(MaterialApp(home: Page1()));
}

在page1类中,导入上述文件。

class Page1 extends StatefulWidget {
  @override
  _Page1State createState() => _Page1State();
}

class _Page1State extends State<Page1> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: color,
      appBar: AppBar(title: Text("Page 1")),
      body: Center(
        child: Column(
          children: <Widget>[
            RaisedButton(
              onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (c) => Page2())),
              child: Text("Go to Page 2"),
            ),
            RaisedButton(
              child: Text("Change color"),
              onPressed: () => setState(() => color = Colors.red),
            ),
          ],
        ),
      ),
    );
  }
}

在page2类中,导入第一个文件。

class Page2 extends StatefulWidget {
  @override
  _Page2State createState() => _Page2State();
}

class _Page2State extends State<Page2> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: color,
      appBar: AppBar(title: Text("Page 2")),
      body: Center(
        child: Column(
          children: <Widget>[
            RaisedButton(
              onPressed: () => Navigator.pop(context),
              child: Text("Back"),
            ),
            RaisedButton(
              child: Text("Change color"),
              onPressed: () => setState(() => color = Colors.green),
            ),
          ],
        ),
      ),
    );
  }
}

相关问题