From fa705507ba574c857b1667553737d23b1b7ff495 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 12 五月 2022 12:06:31 +0800 Subject: [PATCH] 后端模板代码优化 --- src/main/resources/code/flutter_module/lib/ui/widget/refresh_listview.dart | 168 +++++++++++++++++++++++++++++++------------------------ 1 files changed, 94 insertions(+), 74 deletions(-) diff --git a/src/main/resources/code/flutter_module/lib/ui/widget/refresh_listview.dart b/src/main/resources/code/flutter_module/lib/ui/widget/refresh_listview.dart index add315e..76f7e78 100644 --- a/src/main/resources/code/flutter_module/lib/ui/widget/refresh_listview.dart +++ b/src/main/resources/code/flutter_module/lib/ui/widget/refresh_listview.dart @@ -1,17 +1,19 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import '../../ui/widget/button.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; typedef OnRefresh = void Function(); typedef OnLoadMore = void Function(); typedef BoolCallback = void Function(bool b); +typedef StringCallback = void Function(String s); typedef GetViewState = RefreshListViewState Function(); class MyRefreshController extends RefreshController { MyRefreshController({ bool initialRefresh = true, }) : super( - initialRefresh: initialRefresh, initialLoadStatus: LoadStatus.idle); + initialRefresh: initialRefresh, initialLoadStatus: LoadStatus.idle); //api閿欒 VoidCallback? apiError; @@ -37,7 +39,7 @@ void dispose() { apiError = null; dataEmpty = null; - dataNormal=null; + dataNormal = null; setPullDownEnable = null; setPullUpEnable = null; setEditMode = null; @@ -47,19 +49,23 @@ class RefreshListView extends StatefulWidget { final MyRefreshController refreshController; final Widget content; + final Widget? emptyView; final OnRefresh? refresh; final OnLoadMore? loadMore; + final Color loadTextColor; bool? enablePullDown; bool? enablePullUp; RefreshListView( {required this.refreshController, - required this.content, - this.refresh, - this.loadMore, - this.enablePullDown = true, - this.enablePullUp = true}); + required this.content, + this.emptyView, + this.refresh, + this.loadTextColor = const Color(0xFFB8AFB5), + this.loadMore, + this.enablePullDown = true, + this.enablePullUp = true}); @override State<StatefulWidget> createState() => _RefreshListViewState(); @@ -77,7 +83,7 @@ bindController() { widget.refreshController.apiError = _apiError; widget.refreshController.dataEmpty = _dataEmpty; - widget.refreshController.dataNormal =_dataNormal; + widget.refreshController.dataNormal = _dataNormal; widget.refreshController.setPullDownEnable = _pullDownEnable; widget.refreshController.setPullUpEnable = _pullUpEnable; widget.refreshController.viewState = () { @@ -88,7 +94,6 @@ editMode = enable; }); }; - } //瑙嗗浘鐘舵�� 0-姝e父 1-绌鸿鍥� 2-缃戠粶璇锋眰閿欒 @@ -151,85 +156,100 @@ return editMode ? widget.content : SmartRefresher( - enablePullDown: widget.enablePullDown!, - enablePullUp: widget.enablePullUp!, - header: const WaterDropHeader( - complete: Text( - "鍒锋柊瀹屾垚", - style: TextStyle(color: Color(0xFFB8AFB5)), - ), - ), - footer: CustomFooter( - builder: (BuildContext context, LoadStatus? mode) { - Widget body; - if (mode == LoadStatus.idle) { - body = const Text("", - style: TextStyle(color: Color(0xFFB8AFB5))); - } else if (mode == LoadStatus.loading) { - body = const CupertinoActivityIndicator(); - } else if (mode == LoadStatus.failed) { - body = const Text("鍔犺浇澶辫触锛佺偣鍑婚噸璇曪紒", - style: TextStyle(color: Color(0xFFB8AFB5))); - } else if (mode == LoadStatus.canLoading) { - body = const Text("鏉炬墜,鍔犺浇鏇村!", - style: TextStyle(color: Color(0xFFB8AFB5))); - } else { - body = const Text("娌℃湁鏇村鏁版嵁浜�!", - style: TextStyle(color: Color(0xFFB8AFB5))); - } - return SizedBox( - height: 55.0, - child: Center(child: body), - ); - }, - ), - controller: widget.refreshController, - onRefresh: _onRefresh, - onLoading: _onLoading, - child: widget.content, - ); - } + enablePullDown: widget.enablePullDown!, + enablePullUp: widget.enablePullUp!, + header: + MaterialClassicHeader(), - Widget emptyView() { - return Container( - width: MediaQuery.of(context).size.width * 2 / 3, - alignment: Alignment.center, - // color: Colors.yellow, - child: Stack( - alignment: Alignment.bottomCenter, - children: [ - Image.asset( - "assets/imgs/common/ic_empty.png", - ), - const Text( - "鏆傛棤鏁版嵁 ", - style: TextStyle(color: Color(0xFFF698C9), fontSize: 18), - ) - ], + // const WaterDropHeader( + // complete: Text( + // "鍒锋柊瀹屾垚", + // style: TextStyle(color: Color(0xFFB8AFB5)), + // ), + // ), + footer: CustomFooter( + builder: (BuildContext context, LoadStatus? mode) { + Widget body; + if (mode == LoadStatus.idle) { + body = const Text("", + style: TextStyle(color: Color(0xFFB8AFB5))); + } else if (mode == LoadStatus.loading) { + body = const CupertinoActivityIndicator(); + } else if (mode == LoadStatus.failed) { + body = const Text("鍔犺浇澶辫触锛佺偣鍑婚噸璇曪紒", + style: TextStyle(color: Color(0xFFB8AFB5))); + } else if (mode == LoadStatus.canLoading) { + body = const Text("鏉炬墜,鍔犺浇鏇村!", + style: TextStyle(color: Color(0xFFB8AFB5))); + } else { + body = Text("~鍒板簳浜唦", + style: TextStyle(color: widget.loadTextColor)); + } + return SizedBox( + height: 55.0, + child: Center(child: body), + ); + }, ), + controller: widget.refreshController, + onRefresh: _onRefresh, + onLoading: _onLoading, + child: widget.content, ); } - Widget errorView() { - return InkWell( - onTap: () { - _onRefresh(); - }, - child: Container( + Widget emptyView() { + return widget.emptyView ?? + Container( + width: MediaQuery.of(context).size.width * 2 / 3, alignment: Alignment.center, // color: Colors.yellow, child: Stack( alignment: Alignment.bottomCenter, children: [ - Image.asset("assets/imgs/common/ic_network_error.png", - width: MediaQuery.of(context).size.width * 2 / 5), + Image.asset( + "assets/imgs/common/ic_empty.png", + ), const Text( - "缃戠粶寮傚父锛岀偣鍑婚噸鏂板姞杞�", - style: TextStyle(color: Color(0xFFF698C9), fontSize: 18), + "~绌虹┖濡備篃~", + style: TextStyle(color: Color(0xFF999999), fontSize: 18), ) ], ), - )); + ); + } + + Widget errorView() { + return Container( + alignment: Alignment.center, + // color: Colors.yellow, + child: Stack( + alignment: Alignment.bottomCenter, + children: [ + Image.asset("assets/imgs/common/ic_network_error.png", + width: MediaQuery.of(context).size.width * 3 / 5), + const Positioned( + bottom: 50, + left: 0, + right: 0, + child: Text( + "缃戠粶璇锋眰鍑洪敊", + textAlign: TextAlign.center, + style: TextStyle(fontSize: 15, color: Color(0xFF999999)), + )), + MyFillButton( + "鐐瑰嚮閲嶆柊鍔犺浇", + 18, + width: 170, + height: 36, + fontSize: 15, + onClick: () { + _onRefresh(); + }, + ) + ], + ), + ); } @override -- Gitblit v1.8.0