diff --git a/lib/base/base_state_widget.dart b/lib/base/base_state_widget.dart index d40eb66..0cc2eca 100644 --- a/lib/base/base_state_widget.dart +++ b/lib/base/base_state_widget.dart @@ -1,5 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:qinglong_app/base/ui/lazy_load_state.dart'; import 'package:qinglong_app/utils/extension.dart'; import 'base_viewmodel.dart'; @@ -8,6 +9,7 @@ class BaseStateWidget extends ConsumerStatefulWidget { final ProviderBase model; final Widget? child; final Function(T)? onReady; + final bool lazyLoad; const BaseStateWidget({ Key? key, @@ -15,26 +17,14 @@ class BaseStateWidget extends ConsumerStatefulWidget { required this.model, this.child, this.onReady, + this.lazyLoad = false, }) : super(key: key); @override _BaseStateWidgetState createState() => _BaseStateWidgetState(); } -class _BaseStateWidgetState - extends ConsumerState> { - @override - void initState() { - super.initState(); - WidgetsBinding.instance?.addPostFrameCallback( - (timeStamp) { - if (widget.onReady != null) { - widget.onReady!(ref.read(widget.model)); - } - }, - ); - } - +class _BaseStateWidgetState extends ConsumerState> with LazyLoadState> { @override Widget build(BuildContext context) { var viewModel = ref.watch(widget.model); @@ -65,32 +55,27 @@ class _BaseStateWidgetState if (viewModel.currentState == PageState.EMPTY) { return Container( alignment: Alignment.center, - child: Text("暂无数据"), + child: const Text("暂无数据"), ); } return Container(); } -} -abstract class BaseState extends State { - late T parent; + @override + void onLazyLoad() { + if (widget.onReady != null && widget.lazyLoad) { + widget.onReady!(ref.read(widget.model)); + } + } @override void initState() { - parent = widget as T; super.initState(); - WidgetsBinding.instance?.endOfFrame.then((_) { - firstFrameCalled(); + WidgetsBinding.instance?.addPostFrameCallback((timeStamp) { + if (widget.onReady != null && !widget.lazyLoad) { + widget.onReady!(ref.read(widget.model)); + } }); } - - void firstFrameCalled() {} - - @override - Widget build(BuildContext context) { - return buildWidgets(context); - } - - Widget buildWidgets(BuildContext context); } diff --git a/lib/module/others/scripts/script_page.dart b/lib/module/others/scripts/script_page.dart index 2d64ac9..bfc9f62 100644 --- a/lib/module/others/scripts/script_page.dart +++ b/lib/module/others/scripts/script_page.dart @@ -6,6 +6,7 @@ import 'package:qinglong_app/base/http/http.dart'; import 'package:qinglong_app/base/ql_app_bar.dart'; import 'package:qinglong_app/base/routes.dart'; import 'package:qinglong_app/base/theme.dart'; +import 'package:qinglong_app/base/ui/lazy_load_state.dart'; import 'package:qinglong_app/module/others/scripts/script_bean.dart'; import 'package:qinglong_app/utils/extension.dart'; @@ -17,15 +18,9 @@ class ScriptPage extends ConsumerStatefulWidget { _ScriptPageState createState() => _ScriptPageState(); } -class _ScriptPageState extends ConsumerState { +class _ScriptPageState extends ConsumerState with LazyLoadState { List list = []; - @override - void initState() { - super.initState(); - loadData(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -51,9 +46,8 @@ class _ScriptPageState extends ConsumerState { title: Text( item.title ?? "", style: TextStyle( - color: (item.disabled ?? false) - ? ref.watch(themeProvider).themeColor.descColor() - : ref.watch(themeProvider).themeColor.titleColor(), + color: + (item.disabled ?? false) ? ref.watch(themeProvider).themeColor.descColor() : ref.watch(themeProvider).themeColor.titleColor(), fontSize: 16, ), ), @@ -93,9 +87,8 @@ class _ScriptPageState extends ConsumerState { title: Text( item.title ?? "", style: TextStyle( - color: (item.disabled ?? false) - ? ref.watch(themeProvider).themeColor.descColor() - : ref.watch(themeProvider).themeColor.titleColor(), + color: + (item.disabled ?? false) ? ref.watch(themeProvider).themeColor.descColor() : ref.watch(themeProvider).themeColor.titleColor(), fontSize: 16, ), ), @@ -118,4 +111,9 @@ class _ScriptPageState extends ConsumerState { response.message?.toast(); } } + + @override + void onLazyLoad() { + loadData(); + } }