flatter如何在android中随机化启动屏幕
我目前正在dart中编写一个颤振项目,并从颤振构建android应用程序。我现在有一个覆盖整个屏幕的图像作为启动屏幕。现在,我想提供其他图像,以便每次用户打开应用程序时,应用程序都会显示一个随机图像 我搜索了“如何随机设置android启动屏幕”,但它都需要修改一些java代码(但我正在编写一个dart项目)。是否有其他方法,如仅修改.dart和/或.xml代码? 我已经在不同的地方添加了第二个图像,但都不起作用。见下文: 在launch_background.xml中,以下仅显示启动屏幕_1图像,从未显示启动屏幕_2flatter如何在android中随机化启动屏幕,android,xml,flutter,dart,Android,Xml,Flutter,Dart,我目前正在dart中编写一个颤振项目,并从颤振构建android应用程序。我现在有一个覆盖整个屏幕的图像作为启动屏幕。现在,我想提供其他图像,以便每次用户打开应用程序时,应用程序都会显示一个随机图像 我搜索了“如何随机设置android启动屏幕”,但它都需要修改一些java代码(但我正在编写一个dart项目)。是否有其他方法,如仅修改.dart和/或.xml代码? 我已经在不同的地方添加了第二个图像,但都不起作用。见下文: 在launch_background.xml中,以下仅显示启动屏幕_1图
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_1" />
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_2" />
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_1" />
</item>
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_2" />
</item>
</layer-list>
以下仅显示启动屏幕2图像,启动屏幕1从未显示
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_1" />
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_2" />
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_1" />
</item>
<item>
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/splash_screen_2" />
</item>
</layer-list>
有没有办法解决颤振的问题?e、 g.只修改.xml和/或.dart代码,不需要修改java代码?谢谢大家! 试试这个:
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(MyApp());
Widget randomScreen(int max) {
var rnd = Random();
var num = rnd.nextInt(max);
print(num);
switch (num) {
case 1: return SecondSplashScreen();break;
case 2: return ThirdSplashScreen();break;
default: return FirstSplashScreen();break;
}
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: randomScreen(4),
);
}
}
class FirstSplashScreen extends StatefulWidget {
FirstSplashScreen({Key key}) : super(key: key);
_FirstSplashScreenState createState() => _FirstSplashScreenState();
}
class _FirstSplashScreenState extends State<FirstSplashScreen> {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.blue
);
}
}
class SecondSplashScreen extends StatefulWidget {
SecondSplashScreen({Key key}) : super(key: key);
_SecondSplashScreenState createState() => _SecondSplashScreenState();
}
class _SecondSplashScreenState extends State<SecondSplashScreen> {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.red
);
}
}
class ThirdSplashScreen extends StatefulWidget {
ThirdSplashScreen({Key key}) : super(key: key);
_ThirdSplashScreenState createState() => _ThirdSplashScreenState();
}
class _ThirdSplashScreenState extends State<ThirdSplashScreen> {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.green
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:math”;
void main()=>runApp(MyApp());
窗口小部件随机屏幕(int max){
var rnd=Random();
var num=rnd.nextInt(最大值);
打印(num);
开关(num){
案例1:返回第二个SplashScreen();中断;
案例2:返回第三个PlashScreen();中断;
默认值:返回FirstSplashScreen();中断;
}
}
类MyApp扩展了无状态小部件{
//此小部件是应用程序的根。
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主页:随机屏幕(4),
);
}
}
类FirstSplashScreen扩展StatefulWidget{
FirstSplashScreen({Key}):超级(Key:Key);
_FirstSplashScreenState createState()=>\u FirstSplashScreenState();
}
类_firstScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色。蓝色
);
}
}
类SecondSplashScreen扩展StatefulWidget{
SecondSplashScreen({Key}):super(Key:Key);
_SecondSplashScreenState createState()=>\u SecondSplashScreenState();
}
类_/screenstate扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色。红色
);
}
}
类ThirdSplashScreen扩展StatefulWidget{
ThirdsplashsScreen({Key}):超级(Key:Key);
_ThirdSplashScreenState createState()=>\u ThirdSplashScreenState();
}
类_thirdsplashscrenstate扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
颜色:颜色。绿色
);
}
}
你所说的“有颤振方式”是什么意思?你的问题让人困惑。对不起,我的意思是不修改java代码,只修改.xml和/或.dart代码。所以你的项目是一个普通的android项目,但是你想从那里运行一个dart类吗?我认为这不是一个明智的办法。如果你想要一个成熟的颤振应用程序,可以使用类似于IndexedStack
。如果你想用Java/Kotlin编写一个android应用程序,你可以使用ViewSwitcher
。谢谢你,但是我的项目不是一个普通的android项目,而是一个flatter项目。我已经用dart编写了所有代码(没有一个是用java编写的)。我想从Flatter构建android应用程序。但当我在线搜索时,它们都提供java解决方案,所以我感到困惑。我想在dart/xml中使用一些解决方案,但我被卡住了。