Android 如何保持启动屏幕直到数据准备就绪

Android 如何保持启动屏幕直到数据准备就绪,android,flutter,Android,Flutter,是否可能是spash屏幕(启动屏幕) 在应用程序所需的数据准备就绪之前是否显示 manifest.xml中是否有以下其他选项? “io.flatter.app.android.splashScreenUntillFirstFrame”经过多次尝试,我找到了一个可以优化的解决方案。 请告诉我你的意见 通常颤振始于 void main() => runApp(new MyApp()); 我通过修改代码在开始时插入了数据采集 void main() async { final Order

是否可能是spash屏幕(启动屏幕) 在应用程序所需的数据准备就绪之前是否显示

manifest.xml中是否有以下其他选项?
“io.flatter.app.android.splashScreenUntillFirstFrame”

经过多次尝试,我找到了一个可以优化的解决方案。 请告诉我你的意见

通常颤振始于

void main() => runApp(new MyApp());
我通过修改代码在开始时插入了数据采集

void main() async {

  final OrderedAppList aList = new OrderedAppList(); //class to get all data

  var funx = (int) async => aList.getit(); //to get all of the data

    var value;
    value = await funx(1); //should wait for the return value

  runApp(new MyApp(
      qallUserApps: aList.allUserApps,
      qlistLen: value, // means aList.listLen,
      qplatformVersion: aList.platformVersion,
      qmodel: aList.model
  ));
  }
在MyApp中:

class MyApp extends StatelessWidget {
  final List qallUserApps;
  final int qlistLen;
  final String qplatformVersion;
  final String qmodel;

  // Constructor:
  const MyApp({Key key, this.qallUserApps,
                        this.qlistLen,
                        this.qplatformVersion,
                        this.qmodel})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
// ...
}
OrderedApplication类的代码部分:

class OrderedAppList {
  int listLen= -1;
  String platformVersion = "Unknown Platform";
  String model = "Unknown Platform";
  List allUserApps = null;


  Future<int> getit() async {
    try {
      allUserApps = await AppsAsStateless.allApps;
      listLen = allUserApps.length;
    } on Exception {
      allUserApps = null;
      listLen = 0;
    }
// ...
return listLen ;
}
class OrderedApplication{
int listLen=-1;
字符串platformVersion=“未知平台”;
String model=“未知平台”;
List allUserApps=null;
Future getit()异步{
试一试{
allUserApps=等待appsastateless.allApps;
listLen=allUserApps.length;
}例外{
allUserApps=null;
listLen=0;
}
// ...
返回列表;
}
感谢您阅读此文!

它运行良好且 可以优化main中的代码:

void main() async { // async that data acquisition done before any widgets shown

  final OrderedAppList aList = new OrderedAppList();

  int value;
  value = await aList.getit();

  runApp(new MyApp(
      qallUserApps: aList.allUserApps,
      qlistLen: value, // = aList.listLen,
      qplatformVersion: aList.platformVersion,
      qmodel: aList.model
  ));
}

您可以使用
FutureBuilder
StreamBuilder
进行此类操作。并在加载数据之前显示loader或splash