如何制作透明/显示壁纸的 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 应用的主要内容,如果未能解决你的问题,请参考以下文章

Flutter图表库fl_chart的使用解析(二)-折线图

如何在我的 iOS 应用程序中获得透明背景,以便我可以看到主屏幕壁纸?

win10开机只有任务栏,没有应用,壁纸显示正常,还要重启一下才行?

如何让 Flutter 应用在​​ android 导航栏后面绘制并使导航栏完全透明?

Flutter 如何将裁剪器添加到 fl_chart (CustomPainter)

颤振,如何将图像网络设置为壁纸2021