整个应用程序有一个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 – 如何为屏幕设置不同的主题?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)