如何制作 transparent/wallpaper-showing Flutter 应用
How to make a transparent/wallpaper-showing Flutter app
基本上,我只是为了好玩而尝试使用 Flutter 编写启动器,而我坚持的一件事是主屏幕。我正在努力做到这一点,以便您可以通过 应用程序和墙纸看到。我像这样更改了 AndroidManifest.xml
:
<activity android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar" <!-- I changed this line -->
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
并将其放入我的 main.dart
:
return new MaterialApp(
title: 'Launcher',
theme: new ThemeData(
scaffoldBackgroundColor: Colors.transparent, // <-- this line
),
home: new HomeScreen(),
);
但它仍然不起作用。我错过了什么?
我相信您 运行 发现了 Flutter 引擎中的一个错误,该错误由 https://github.com/flutter/flutter/issues/9627 跟踪。在撰写本文时,该错误已确定 Flutter 引擎(Flutter 的 C++ 部分)默认情况下在 Android 上用黑色填充整个 FlutterView 区域,然后再让 Dart 代码绘制。
现在(2019 年 7 月)可以实现透明的颤动背景。
正在讨论 Android 问题 here
怎么做:
- This评论有详细解释
一些透明的工作Android演示应用程序:
- 显示设备壁纸的透明应用程序GitHub repo
- 一个透明的应用程序,显示在其他应用程序之上。 GitHub repo
iOS 问题是 here
A comment 建议可以在 iOS 上设置透明背景。
可以通过在ViewController.
中添加以下行来实现
flutterViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
并设置flutterViewController.isViewOpaque = false
基本上,我只是为了好玩而尝试使用 Flutter 编写启动器,而我坚持的一件事是主屏幕。我正在努力做到这一点,以便您可以通过 应用程序和墙纸看到。我像这样更改了 AndroidManifest.xml
:
<activity android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar" <!-- I changed this line -->
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
并将其放入我的 main.dart
:
return new MaterialApp(
title: 'Launcher',
theme: new ThemeData(
scaffoldBackgroundColor: Colors.transparent, // <-- this line
),
home: new HomeScreen(),
);
但它仍然不起作用。我错过了什么?
我相信您 运行 发现了 Flutter 引擎中的一个错误,该错误由 https://github.com/flutter/flutter/issues/9627 跟踪。在撰写本文时,该错误已确定 Flutter 引擎(Flutter 的 C++ 部分)默认情况下在 Android 上用黑色填充整个 FlutterView 区域,然后再让 Dart 代码绘制。
现在(2019 年 7 月)可以实现透明的颤动背景。
正在讨论 Android 问题 here
怎么做:
- This评论有详细解释
一些透明的工作Android演示应用程序:
- 显示设备壁纸的透明应用程序GitHub repo
- 一个透明的应用程序,显示在其他应用程序之上。 GitHub repo
iOS 问题是 here
A comment 建议可以在 iOS 上设置透明背景。
可以通过在ViewController.
中添加以下行来实现flutterViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
并设置flutterViewController.isViewOpaque = false