gpt4 book ai didi

dart - 如何使用新的ThemeData重绘整个应用程序?

转载 作者:行者123 更新时间:2023-12-03 04:30:04 24 4
gpt4 key购买 nike

我有2个ThemeData vars和一个带有以下代码的SwitchListTile:

new SwitchListTile(
value: applyDarkTheme,
title: const Text('Appy dark theme?'),
onChanged: (bool value) {
setState(() {
applyDarkTheme = value;
});
})
applyDarkTheme是一个变量,仅在首次创建应用程序时才检查:
return new MaterialApp(
title: 'Test Application',
home: new MyHomePage(title: 'Test app'),
theme: settings.applyDarkTheme ? AppThemes.dark : AppThemes.light,
routes: _routes,
);

更改开关状态后,如何使用新的 ThemeData重新绘制应用程序?

最佳答案

您可能需要考虑将MaterialApp嵌套在StatefulWidget中

  • Stateful and Stateless Widgets
  • Stateful Widget

  • Flutter Gallery示例应用程序在其 GalleryApp小部件中执行此操作。
  • 使用简单,轻便的StatefulWidget类,例如GalleryApp
  • 创建相应的GalleryAppState类。
  • 此类具有GalleryTheme _galleryTheme实例变量
  • 您需要在setState()方法 [ref]中设置/更改此值。
  • 然后可以将它们pass this到MaterialApp构造函数

  • 这是修改后的代码段
    class GalleryApp extends StatefulWidget {
    @override
    GalleryAppState createState() => new GalleryAppState();
    }

    class GalleryAppState extends State<GalleryApp> {
    GalleryTheme _galleryTheme = kAllGalleryThemes[0];
    ...

    @override
    Widget build(BuildContext context) {
    Widget home = new GalleryHome(
    galleryTheme: _galleryTheme,
    onThemeChanged: (GalleryTheme value) {
    setState(() {
    _galleryTheme = value;
    });
    },
    ...
    );

    ...

    return new MaterialApp(
    ...
    home: home,
    );
    }
    }

    关于dart - 如何使用新的ThemeData重绘整个应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49339036/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com