dart – 如何为屏幕设置不同的主题?

dart – 如何为屏幕设置不同的主题?,第1张

概述我创建了 Friendly Chat app,并希望添加一个不同主题的新屏幕,但它不起作用:-( 整个应用程序有一个Brightness.dark主题: void main() => runApp(new MyApp());class MyApp extends StatelessWidget { // This widget is the root of your applicatio 我创建了 Friendly Chat app,并希望添加一个不同主题的新屏幕,但它不起作用:-(

整个应用程序有一个Brightness.dark主题:

voID main() => runApp(new MyApp());class MyApp extends StatelessWidget {  // This Widget is the root of your application.  @overrIDe  Widget build(BuildContext context) {    print("build MaterialApp");    return new MaterialApp(      Title: 'FrIEndly Chat',theme: ktheme,home: new ChatScreen(),routes: <String,WidgetBuilder>{        SettingsScreen.PATH: (BuildContext context) => new SettingsScreen()      },);  }}final themeData ktheme = new themeData(  primarySwatch: colors.indigo,primarycolor: colors.indigoAccent[100],primarycolorBrightness: Brightness.dark,);

当用户单击按钮时,我按下设置屏幕:

Map results = await Navigator.of(context).pushnamed(SettingsScreen.PATH);

在设置屏幕中,我更改了Appbar的backgroundcolor和亮度但新的/不同的亮度没有效果(更改backgroundcolor工作)

class SettingsScreen extends StatefulWidget {  @overrIDe  State createState() => new SettingsScreenState();}class SettingsScreenState extends State<SettingsScreen> {  @overrIDe  Widget build(BuildContext context) {    return new WillPopScope(      onWillPop: _onWillPop,child: new Scaffold(        appbar: new Appbar(          Title: new Text("Settings"),backgroundcolor: colors.AmberAccent[700],brightness: Brightness.light,),);  }}

如何将设置屏幕Appbar主题更改为轻量级主题?

编辑

最后我想要:

>所有屏幕都有一个黑色的Appbar背景色,带有白色标题和图标
>设置屏幕(仅限)具有浅色标题和图标的Appbar背景颜色

加分:如何为整个屏幕设置不同的主题,而不仅仅是Appbar

解决方法 您可以通过在 Theme小部件中包装所需的小部件来覆盖当前主题

通常你会有类似的东西:

class CustomAppbar extends StatelessWidget implements PreferredSizeWidget {  final Appbar appbar;  CustomAppbar(): appbar = new Appbar();  @overrIDe  Widget build(BuildContext context) {    return new theme(      child: appbar,data: new themeData.dark()    );  }  @overrIDe  Size get preferredSize => appbar.preferredSize;}

必须创建一个自定义类,因为Scaffold需要一个PreferredSizeWidget.

编辑

要回答你的“奖励点”,这很简单.

而不是将Appbar包装在主题中,而是包裹Scaffold.

总结

以上是内存溢出为你收集整理的dart – 如何为屏幕设置不同的主题?全部内容,希望文章能够帮你解决dart – 如何为屏幕设置不同的主题?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1001856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存