Flutter:Material App 的标题用在哪里?

Posted

技术标签:

【中文标题】Flutter:Material App 的标题用在哪里?【英文标题】:Flutter : Where is the title of Material App used? 【发布时间】:2018-11-09 22:02:18 【问题描述】:

flutter 应用名称包名显示,AppBar标题显示在首页的AppBar ,那么标题MaterialApp(title: 'Rectangle App',);在哪里用在flutter项目中。

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return new MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Rectangle App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Rectangle App Home Page'),
        ),
        body: HelloRectangle(),
      ),
    );
  

【问题讨论】:

【参考方案1】:

这是个好问题。下面是它的使用说明:

设备用于为用户识别应用的单行描述。

android 上,标题显示在任务管理器的应用快照上方 当用户按下“最近的应用程序”按钮时显示。 同样,在 ios 上,当用户访问时,标题会出现在 App Switcher 中 双击主页按钮。

简而言之:

在 Android 上:用于最近的应用程序

iOS:应用切换器中使用

2020 年 2 月 11 日更新:

文档更新了(具体更新时间我不知道)

设备用于识别应用程序的单行描述 用户。在 Android 上,标题显示在任务管理器的应用程序上方 当用户按下“最近的应用程序”时显示的快照 按钮。在 iOS 上不能使用这个值。 CFBundleDisplayName 来自 应用程序的 Info.plist 在出现时被引用,CFBundleName 否则。要改为提供本地化标题,请使用 [onGenerateTitle]。

所以这个值对iOS没有影响

【讨论】:

不适用于 iOS!除了 info.plist 之外,无法更改应用显示名称。 为什么当它不正确时仍然被认为是“正确答案”?这一行根本不正确:“同样,在 iOS 上,当用户双击主页按钮时,标题会出现在 App Switcher 中。” 那行有什么问题?我是从官方文档中挑选出来的 @PhucTran 问题是它是错误的。在 iOS 上不使用 title 属性。引用 MaterialApp 类文档:“在 Android 上,标题出现在任务管理器的应用程序快照上方,当用户按下“最近的应用程序”按钮时会显示这些快照。在 iOS 上,此值不能使用。引用应用程序 Info.plist 中的 CFBundleDisplayName改为只要存在,否则为 CFBundleName。" 好的。我刚刚再次检查了文档并更新了我的答案。感谢您的反馈。【参考方案2】:

在“Flutter for Web”中,它用于浏览器选项卡中,对应于网络应用的 'title' 属性。

【讨论】:

【参考方案3】:

根据official doc:

设备用于识别应用程序的单行描述 用户。

在 Android 上,标题显示在任务管理器的应用快照上方 当用户按下“最近的应用程序”按钮时显示。在 iOS 无法使用此值。来自应用程序的 CFBundleDisplayName Info.plist 只要存在就会被引用,CFBundleName 否则。

1.仅适用于 Android。

2。在 iOS 上无法使用此值。

【讨论】:

技术上它可以使用。什么都没有发生,它甚至不会给你一个警告,因为 Write Once 等等,但是它没有任何价值/没有任何效果 ,所以它存在的意义只是为了避免需要为不同的平台提供单独的源文件。如果我做对了,这有点像 Flutter 背后的想法。【参考方案4】:

更新: 完整地说,既然 Flutter 正在更多平台上实现,比如提到的 Web 平台和即将推出的桌面支持,我目前的答案可能已经不够用了。

MaterialApp 类的 title 属性仍按原描述使用:设备用于识别应用的单行描述为用户。

在 Android 上,“title”属性显示在任务管理器的应用快照上方,当用户按下“最近的应用”按钮或使用手势触发相同的功能时,就会显示这些快照。

在 iOS 上此值无效。

应用程序的“Info.plist”中的“CFBundleDisplayName”在出现时被引用,否则被引用为“CFBundleName”。情况仍然如此。

您可以在 Xcode 中打开 iOS 模块来更改 Info.plist 中的值以更改在 iOS 上显示的内容。

在 iOS 上使用 CupertinoApp 类时也是如此。

在其他情况下,title 属性是由 “操作系统任务切换器”。因此,随着 Flutter 在更多平台上的实施,这在实践中意味着什么还有待观察。 但如前所述,该值在与 Flutter for web 一起使用时传递给浏览器选项卡的标题,在(截至目前)实验性 macOS 和 Linux 桌面平台上使用时传递给窗口标题,在使用时作为应用程序标题OS 应用切换器,例如 macOS 上的 ⌘ + Tab。

【讨论】:

【参考方案5】:
class MyApp extends StatelessWidget 
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) 
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: Elements.getThemeData(),
      home: new MyHomePage(title: 'Flutter Demo Home Page'),
    );
  

当你把应用程序的背景标题显示出来。 页面标题显示为“Flutter Demo Home Page”

【讨论】:

以上是关于Flutter:Material App 的标题用在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 使用 Material 在 longpress 上更改 appbar

Flutter-02第一个Flutter APP

连接 Flutter App API 服务器的问题

带有可点击卡片 back4app 的 Flutter Future Builder

URI 的目标不存在 'package:flutter/material.dart'

Flutter JSON数据问题