Web应用程序通常在选项卡的标题中反映当前显示的内容。
将title
参数提供给aMaterialApp
或WidgetsApp
意味着我不能在不重建整个树的情况下更改它,即setState
在返回我的代码的顶层调用MaterialApp
。
MaterialApp(
title: 'Web app title',
...,
)
我希望能够改变应用的标题从任何地方在应用中的任何时间。我怎么做?
该应用程序的标题可以动态地改变在所有平台上使用SystemChrome.setApplicationSwitcherDescription
:
@override
Widget build(BuildContext context) {
SystemChrome.setApplicationSwitcherDescription(ApplicationSwitcherDescription(
label: 'Dynamic web app title',
primaryColor: Theme.of(context).primaryColor.value,
));
return Container(...);
}
SystemChrome
变得可用import 'package:flutter/services.dart';
,你想打电话给setApplicationSwitcherDescription
你的build
方法。
这也是如何Title
它(见源代码),这是由所使用的小部件WidgetsApp
,MaterialApp
等等。
因此,您也可以使用Title
小部件来代替SystemChrome
自己的访问:
@override
Widget build(Context context) {
return Title(
label: 'Dynamic app title',
primaryColor: Theme.of(context).primaryColor.value,
child: ..,
);
}
label
该label
参数非常简单:它精确地映射到title
您的内容,MaterialApp
而只是一个String
。
primaryColor
该primaryColor
决定颜色的系统可能在应用切换器的使用,例如在Android最近用过的标题栏的颜色。
这是一个int
替代的Color
,这就是为什么你需要打电话Color.value
给你的原色转换为整数。
Title
小号您可能会问自己,设置属性on时调用setApplicationSwitcherDescription
或插入Title
窗口小部件是否会引起任何问题。答案是:否,因为树中最深处的小部件将设置标题。从本质上讲,即使整个应用程序重建,您会后的所谓假设你在呼唤它的孩子,你会因此覆盖的称号。title
MaterialApp
setApplicationSwitcherDescription
MaterialApp
MaterialApp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句