标题栏使闪屏闪屏向下移动

时间:2020-01-19 23:20:54

标签: flutter

我正在编写我的第一个Flutter应用程序,并且一直在尝试了解如何实现启动屏幕。多数情况下都可以,但是在显示第一个屏幕之前,初始屏幕图像有所变化,我不知道为什么。我尝试在以下摘录中显示所有相关的代码和信息。 Here是有关此问题的视频。

是因为应用程序第一个屏幕上的标题栏吗?我的期望是,当相机加载时,启动画面将完全消失。我假设这是应该发生的,但是我的代码中肯定有问题。任何帮助将不胜感激。

launch_background.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black" />
    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/launch_image" />
    </item>
</layer-list>

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>

main.dart

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final cameras = await availableCameras();
  final firstCamera = cameras.first;

  runApp(
    MaterialApp(
      theme: ThemeData.dark(),
      home: TakePictureScreen(camera: firstCamera),
    ),
  );
}

class TakePictureScreen extends StatefulWidget {
   final CameraDescription camera;
   const TakePictureScreen({Key key, @required this.camera,}) : super(key: key);

   @override
   TakePictureScreenState createState() => TakePictureScreenState();
 }

class TakePictureScreenState extends State<TakePictureScreen> {
  CameraController _controller;
  Future<void> _initializeControllerFuture;

  @override
  void initState() {
    super.initState();
    _controller = CameraController(widget.camera, ResolutionPreset.medium);
    _initializeControllerFuture = _controller.initialize();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Test Camera App')),
      body: FutureBuilder<void>(
        future: _initializeControllerFuture,
        builder: (context, snapshot) {
          ...
        },
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.camera_alt),
        onPressed: () async {
          ...
        },
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,所以在网上搜索后找到了解决方案here

android:windowDisablePreview 设置为 true 行添加到您的主题:

<style name="LaunchTheme" parent="Theme.MaterialComponents.DayNight">
    <item name="android:windowDisablePreview">true</item>
    <item name="android:windowBackground">@drawable/launch_background</item>
</style>