Jun*_*won 3 splash-screen dart flutter
当应用程序的启动屏幕显示时,它需要从 FTP 服务器下载文件并处理数据。实现了颤动的启动屏幕
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Future.delayed(Duration(seconds: 3)),
builder: (BuildContext context, AsyncSnapshot snapshot){
if(snapshot.connectionState == ConnectionState.waiting)
return SplashUI(); ///Splash Screen
else
return MainUI(); ///Main Screen
},
);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,延迟 3 秒后,启动屏幕将显示 3 秒,在此期间从 FTP 下载文件并处理数据。我想保留启动屏幕直到数据处理完成而不是指定的时间。
启动画面
Widget _splashUI(Size size){
return SafeArea(
child: Center(
child: Container(
width: size.width * 0.5,
height: size.height * 0.1,
child: Image(
fit: BoxFit.fill,
image: AssetImage('assets/images/elf_logo.png'),
),
),
),
);
}
Widget build(BuildContext context) {
getFtpFile();
dataProgress();
return Platform.isAndroid ?
MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: _splashUI(_size),
),
) :
CupertinoApp(
debugShowCheckedModeBanner: false,
home: CupertinoPageScaffold(
child: _splashUI(_size),
),
);
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在处理数据时保留 SplashScreen,而不是延迟处理 SplashScreen。谢谢。
flutter_native_splash包正是您所要求的。FlutterNativeSplash.preserve()在您之前拨打电话runApp()以将启动画面保留在屏幕上,然后FlutterNativeSplash.remove();在下载完成时:
import 'package:flutter_native_splash/flutter_native_splash.dart';
void main() {
WidgetsBinding widgetsBinding = WidgetsFlutterBinding.ensureInitialized();
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
runApp(const MyApp());
}
// when your download is completed, remove the splash screen:
FlutterNativeSplash.remove();
Run Code Online (Sandbox Code Playgroud)
全面披露:我维护这个包。
processing datarather than在处理 SplashScreen时保留 SplashScreenwith delayed。
为什么不改变延迟呢?
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _processingData(),
builder: (BuildContext context, AsyncSnapshot snapshot){
if(snapshot.connectionState == ConnectionState.waiting)
return SplashUI(); ///Splash Screen
else
return MainUI(); ///Main Screen
},
);
}
Future<List> _processingData() {
return Future.wait[
_getFtpFile(),
_dataProgress(),
];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8202 次 |
| 最近记录: |