【问题标题】:How to make a transparent/wallpaper-showing Flutter app如何制作透明/显示壁纸的 Flutter 应用
【发布时间】: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(),
);

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

【问题讨论】:

    标签: android dart flutter android-wallpaper


    【解决方案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 区域填充为黑色。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多