Flutter 桌面 - 从 Dart 代码更改窗口标题

Flutter desktop - change window title from Dart code

提问人:user1209216 提问时间:6/15/2020 更新时间:9/1/2023 访问量:9471

问:

在搜索官方文档时,我找不到任何方法。有谁知道有什么方法可以做到这一点吗?

Flutter DART 桌面应用程序

评论


答:

1赞 user1209216 6/15/2020 #1

好的,这似乎是不可能的(还),但工作正在进行中:https://github.com/flutter/flutter/issues/30712

20赞 tomrozb 2/13/2021 #2

这是可能的,如 https://github.com/flutter/flutter/issues/30712

在添加pubspec.yaml

dependencies:
  window_size:
    git:
      url: git://github.com/google/flutter-desktop-embedding.git
      path: plugins/window_size
      ref: fd519be1e8398c6b6c2062c2447bac960a71bc02

现在,在您的代码中,只需调用

import 'package:window_size/window_size.dart';

WidgetsFlutterBinding.ensureInitialized();
setWindowTitle("Custom window title");

在 Linux 上运行良好。尚未在 Windows/Mac 上测试过

附言 感谢 @Johan Ordenes Galleguillos 的失踪者WidgetsFlutterBinding.ensureInitialized();

评论

4赞 Johan Ordenes Galleguillos 4/3/2022
无法编辑答案,但请确保添加 WidgetsFlutterBinding.ensureInitialized();在 setWindowsTitle(“”) 之前。
1赞 zionpi 9/27/2022
它也适用于 Mac。
5赞 abulka 10/5/2022
我必须使用 url 才能使其工作,这就是上面引用的问题所使用的问题。另一方面,这个答案中的网址给了我无限次重试。https://github.com/google/flutter-desktop-embedding.gitpub get failed (server unavailable)
4赞 Dika Desandra Ardiansyah 7/30/2021 #3

转到 Windows > runner > main.cpp 文件夹,找到一个 “ !窗口。CreateAndShow(L“schedule_task”, 原点, 大小) ” 并更改“schedule_task”文本

评论

1赞 Grady Werner 9/23/2021
虽然这确实有效,但它删除了使用本地化功能为不同区域设置提供不同文本的功能。如果您需要该功能,最好使用 @tomrozb 的解决方案
1赞 Promlert Lovichit 12/20/2021
泰语文本显示不正确。:(
3赞 serhii_mikh 4/21/2023 #4

通过使用 windowmanager 包实现了这一点。它有很多用于 flutter 桌面开发的功能。

安装软件包后,只需将其添加到main():

void main() async {
 //needed to ensure binding was initialized 
  WidgetsFlutterBinding.ensureInitialized();

  await WindowManager.instance.ensureInitialized();
  windowManager.waitUntilReadyToShow().then((_) async {
     await windowManager.setTitle('Yor title goes here');
  });

runApp(const MyApp());
}

对我来说,使用 Windows 和 Linux。

引用:

WidgetsFlutterBinding 类

窗口管理器文档

评论

1赞 serhii_mikh 4/21/2023
实际上,您不需要为此设置范围,但是如果您计划,例如,调整窗口大小,最好拥有它。windowManager.waitUntilReadyToShow().then((_) {}
0赞 Hasen 11/7/2023
这可行,但它也会移动窗口。知道为什么会这样或如何防止它吗?