Dynami c заголовок приложения во флаттере
заголовок приложения может быть динамически изменен на всех платформах с использованием 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
, et c.
Таким образом, вы также можете использовать виджет 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
s
Вы можете спросить себя, звоните ли вы setApplicationSwitcherDescription
или вставляете виджет Title
если установлено свойство title
для MaterialApp
, это может вызвать любые проблемы.
Ответ: no , поскольку виджет, который находится в самом низу дерева, будет устанавливать заголовок. По сути, даже если все приложение перестраивается, ваш setApplicationSwitcherDescription
будет вызываться после того, как MaterialApp
, при условии, что вы вызываете его в потомке, и поэтому вы переопределите заголовок MaterialApp
.