可以减少在WIdget中“test-then-else”这样的三元表达式来加载不同UI显示,还有自带淡入淡出动画。
class _MyHomeState extends State{ var _lst = []; @override void initState() { getData(); super.initState(); } getData() async { await Future.delayed(Duration(seconds: 4)); setState(() { _lst = List.generate(100, (int index) => "Item ${index + 1}"); }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Flutter Demo'), ), body: AnimatedCrossFade( duration: Duration(milliseconds: 600), firstChild: Center( child: CircularProgressIndicator(), ), secondChild: ListView( children: _lst .map((String s) => ListTile( key: Key(s), title: Text(s), )) .toList(), ), crossFadeState: _lst.isEmpty ? CrossFadeState.showFirst : CrossFadeState.showSecond, ), ); }}