如何在颤动网络中动态更改App标题? [英] How to dynamically change the App Title in Flutter Web?

查看:17
本文介绍了如何在颤动网络中动态更改App标题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Web应用程序通常在选项卡的标题中反映当前显示的内容

title parameter提供给MaterialAppWidgetsApp意味着如果不重建整个树就无法更改,即在顶层调用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(...);
}

SystemChromeimport 'package:flutter/services.dart';中可用,并且您希望在build方法中调用setApplicationSwitcherDescription

Title也是这样做的(参见source code),这是WidgetsAppMaterialApp等使用的小部件。

因此,您也可以使用Title小部件,而不是自己访问SystemChrome

@override
Widget build(Context context) {
  return Title(
    label: 'Dynamic app title',
    primaryColor: Theme.of(context).primaryColor,
    child: ..,
  );
}

label

label参数非常简单:它精确地映射到MaterialApp中的titleString中的内容。

primaryColor

primaryColor将确定系统可能在应用程序切换器中使用的颜色,例如Android上最近的标题栏颜色。
这是int而不是Color,因此您需要调用Color.value将您的原色转换为整数。

干扰其他Title%s

您可能会问自己,在MaterialApp上设置title属性时,调用setApplicationSwitcherDescription或插入Title小部件是否会导致任何问题。
答案是:不是,因为树中最下面的小部件将设置标题。实际上,即使整个应用重建,您的setApplicationSwitcherDescription也将在MaterialApp之后被调用,假设您是在子级中调用它,因此您将覆盖MaterialApp标题。

这篇关于如何在颤动网络中动态更改App标题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆