flatter如何在android中随机化启动屏幕

flatter如何在android中随机化启动屏幕,android,xml,flutter,dart,Android,Xml,Flutter,Dart,我目前正在dart中编写一个颤振项目,并从颤振构建android应用程序。我现在有一个覆盖整个屏幕的图像作为启动屏幕。现在,我想提供其他图像,以便每次用户打开应用程序时,应用程序都会显示一个随机图像 我搜索了“如何随机设置android启动屏幕”,但它都需要修改一些java代码(但我正在编写一个dart项目)。是否有其他方法,如仅修改.dart和/或.xml代码? 我已经在不同的地方添加了第二个图像,但都不起作用。见下文: 在launch_background.xml中,以下仅显示启动屏幕_1图

我目前正在dart中编写一个颤振项目,并从颤振构建android应用程序。我现在有一个覆盖整个屏幕的图像作为启动屏幕。现在,我想提供其他图像,以便每次用户打开应用程序时,应用程序都会显示一个随机图像

我搜索了“如何随机设置android启动屏幕”,但它都需要修改一些java代码(但我正在编写一个dart项目)。是否有其他方法,如仅修改.dart和/或.xml代码? 我已经在不同的地方添加了第二个图像,但都不起作用。见下文:

在launch_background.xml中,以下仅显示启动屏幕_1图像,从未显示启动屏幕_2

<?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中使用一些解决方案,但我被卡住了。