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



spash屏幕(启动屏幕(是否可能显示,直到应用程序所需的数据准备就绪?

manifest.xml中还有其他选项吗?"io.flutter.app.android.SplashScreenUntilFirstFrame">

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

通常情况下,颤振从开始

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) {
// ...
}

OrderedAppList:类的代码部分

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 ;
}

感谢您阅读本文!

它运行良好主要代码可以优化:

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
));
}

最新更新