如何制作透明/显示壁纸的 Flutter 应用

Posted

技术标签:

【中文标题】如何制作透明/显示壁纸的 Flutter 应用【英文标题】:How to make a transparent/wallpaper-showing Flutter app 【发布时间】:2017-12-04 22:58:50 【问题描述】:

基本上,我正在尝试使用 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(),
);

但它仍然不起作用。我错过了什么?

【问题讨论】:

【参考方案1】:

现在(2019 年 7 月)可以使用透明的颤动背景。

Android 问题正在讨论中here

怎么做:

This评论有详细解释。

一些透明的 Android 演示应用:

显示设备壁纸的透明应用GitHub repo 一个透明的应用程序,显示在其他应用程序之上。 GitHub repo

ios 问题是here

comment 建议可以在 iOS 上使用透明背景。

可以通过在 ViewController 中添加以下行来实现。

flutterViewController.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext

并设置flutterViewController.isViewOpaque = false

【讨论】:

【参考方案2】:

我相信您在 Flutter 引擎中遇到了一个错误,该错误由 https://github.com/flutter/flutter/issues/9627 跟踪。在撰写本文时,该错误已确定 Flutter 引擎(Flutter 的 c++ 部分)默认情况下在让 Dart 代码绘制之前在 Android 上将整个 FlutterView 区域填充为黑色。

【讨论】:

以上是关于如何制作透明/显示壁纸的 Flutter 应用的主要内容,如果未能解决你的问题,请参考以下文章