在发起请求时 需要有loading页面这样可以让用户知道当前正在操作,又可以防止多次点击等误操作,所以这里就自定义了一个loading页面 菊花使用flutter_spinkit里面的菊花来代替
在需要显示loding的地方通过showDialog的弹窗的方式来显示菊花,在需要关闭的时候让dialog关闭
这里使用了flutter_spinkit
flutter_spinkit: ^4.0.0
具体代码
loading.dart
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import 'package:flutter/material.dart'; import 'package:flutter_spinkit/flutter_spinkit.dart'; class Loading extends StatelessWidget { BuildContext ctx; @override Widget build(BuildContext context) { ctx = context; return Container( color: Colors.transparent, child: Center( child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(5), ), width: 60, height: 60, alignment: Alignment.center, child: Column( mainAxisSize: MainAxisSize.min, children: <Widget>[ SpinKitFadingCircle( color: Colors.black, size: 46.0, ) ], ), ), ), ); } void dismiss() { Navigator.pop(ctx); } } |
关于使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 创建Loading对象 Loading loading = Loading(); 实现下面两个方法 void showLoading() { showDialog( barrierDismissible: true, context: context, builder: (ctx) => Theme( data: Theme.of(ctx) .copyWith(dialogBackgroundColor: Colors.transparent), child: loading, )); } void dissmiss() { loading.dismiss(); } 需要loading的地方 showLoading(); 关闭 dissmiss(); |