Flutter 颤振启动屏幕因标题栏而向下移动
我正在编写我的第一个颤振应用程序,我一直在试图了解如何实现闪屏。它基本上是有效的,但在第一个屏幕显示之前,启动屏幕图像发生了变化,我不知道为什么。我试图在下面的摘录中展示所有相关的代码和信息。这是一个关于这个问题的视频 是因为应用程序第一个屏幕上的标题栏吗?我的期望是,当相机加载时,闪屏将完全消失。我假设这是应该发生的,但我的代码中一定有问题。任何帮助都将不胜感激 启动\u background.xmlFlutter 颤振启动屏幕因标题栏而向下移动,flutter,Flutter,我正在编写我的第一个颤振应用程序,我一直在试图了解如何实现闪屏。它基本上是有效的,但在第一个屏幕显示之前,启动屏幕图像发生了变化,我不知道为什么。我试图在下面的摘录中展示所有相关的代码和信息。这是一个关于这个问题的视频 是因为应用程序第一个屏幕上的标题栏吗?我的期望是,当相机加载时,闪屏将完全消失。我假设这是应该发生的,但我的代码中一定有问题。任何帮助都将不胜感激 启动\u background.xml <?xml version="1.0" encoding="utf-8"?> &
<?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>
<?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>
styles.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>
<?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 {
...
},
),
);
}
}
Future main()异步{
WidgetsFlutterBinding.ensureInitialized();
最终摄像机=等待可用摄像机();
final firstCamera=cameras.first;
runApp(
材料聚丙烯(
主题:ThemeData.dark(),
主页:TakePictureScreen(相机:firstCamera),
),
);
}
类TakePictureScreen扩展StatefulWidget{
最终摄像机描述摄像机;
const-TakePictureScreen({Key-Key,@required this.camera,}):super(Key:Key);
@凌驾
TakePictureScreensState createState()=>TakePictureScreenState();
}
类takePictureScreentState扩展了状态{
摄像机控制器(CameraController)控制器;;
未来(初始化控制未来);
@凌驾
void initState(){
super.initState();
_控制器=摄像机控制器(widget.camera,ResolutionPreset.medium);
_initializeControllerFuture=_controller.initialize();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(标题:文本(“测试摄像头应用”),
正文:未来建设者(
未来:_initializeControllerFuture,
生成器:(上下文,快照){
...
},
),
浮动操作按钮:浮动操作按钮(
子:图标(Icons.camera\u alt),
onPressed:()异步{
...
},
),
);
}
}
我也遇到了同样的问题,所以在网上搜索后,我找到了一个解决方案
在主题中添加行android:windowDisablePreview to true:
<style name="LaunchTheme" parent="Theme.MaterialComponents.DayNight">
<item name="android:windowDisablePreview">true</item>
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
真的
@可绘制/发布背景
我也遇到了同样的问题,所以在网上搜索后,我找到了一个解决方案
在主题中添加行android:windowDisablePreview to true:
<style name="LaunchTheme" parent="Theme.MaterialComponents.DayNight">
<item name="android:windowDisablePreview">true</item>
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
真的
@可绘制/发布背景
您的TakePictureScreen中是否碰巧有一个应用程序栏?@CheunYee是的,有一个应用程序栏。我原以为应用程序条加载时启动屏幕会被隐藏,但它似乎确实导致了问题。我添加了更多代码来显示AppBar
实例化。如果删除AppBar
,您能确认这不会发生吗?好问题。我没想过要试试。我注释掉了AppBar
,图片仍然向下移动。你的TakePictureScreen中有AppBar吗?@CheunYee是的,有一个AppBar。我原以为应用程序条加载时启动屏幕会被隐藏,但它似乎确实导致了问题。我添加了更多代码来显示AppBar
实例化。如果删除AppBar
,您能确认这不会发生吗?好问题。我没想过要试试。我注释掉了AppBar
,图片仍然向下移动。