增加下拉刷新功能

This commit is contained in:
GYJ 2024-11-27 16:31:20 +08:00
parent c6957c182f
commit 938a5df35f
4 changed files with 76 additions and 17 deletions

View File

@ -2,6 +2,7 @@ import 'package:cashier_reserve/common/push/push.dart';
import 'package:cashier_reserve/data_model/login/login_result.dart'; import 'package:cashier_reserve/data_model/login/login_result.dart';
import 'package:cashier_reserve/login/login_view.dart'; import 'package:cashier_reserve/login/login_view.dart';
import 'package:cashier_reserve/model/reserve_model.dart'; import 'package:cashier_reserve/model/reserve_model.dart';
import 'package:easy_refresh/easy_refresh.dart';
import '../base/ui.dart'; import '../base/ui.dart';
import '../channel/channel_event.dart'; import '../channel/channel_event.dart';
@ -18,6 +19,21 @@ class AppManager {
MyEventChannel.startListener(); MyEventChannel.startListener();
await HiveManager.initHive(); await HiveManager.initHive();
EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader(
dragText: "下拉刷新",
readyText: "释放刷新",
armedText: "正在刷新",
processingText: "正在刷新",
processedText: "刷新完成",
noMoreText: "没有更多数据了",
failedText: "刷新失败",
messageText: "上次刷新时间:%T",
showText: true,
showMessage: true,
iconDimension: 30,
spacing: 10,
);
} }
static void setGlobalContext(BuildContext context) { static void setGlobalContext(BuildContext context) {

View File

@ -3,6 +3,7 @@ import 'package:cashier_reserve/common/channel/call_log_model.dart';
import 'package:cashier_reserve/common/print/print.dart'; import 'package:cashier_reserve/common/print/print.dart';
import 'package:cashier_reserve/data_model/reserve/reserve_log_model.dart'; import 'package:cashier_reserve/data_model/reserve/reserve_log_model.dart';
import 'package:cashier_reserve/home/reserve_view_model.dart'; import 'package:cashier_reserve/home/reserve_view_model.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
class ReserveLeftContentView extends StatelessWidget { class ReserveLeftContentView extends StatelessWidget {
@ -10,9 +11,7 @@ class ReserveLeftContentView extends StatelessWidget {
final double inputItemHeight = 36; final double inputItemHeight = 36;
final ReserveViewModel provider; final ReserveViewModel provider;
const ReserveLeftContentView( const ReserveLeftContentView({super.key, required this.provider});
{super.key,
required this.provider});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -75,11 +74,17 @@ class ReserveLeftContentView extends StatelessWidget {
Expanded( Expanded(
child: SizedBox( child: SizedBox(
width: contentWidth, width: contentWidth,
child: ListView.builder( child: EasyRefresh(
itemCount: provider.callLogs?.length ?? 0, onRefresh: () async {
itemBuilder: (context, index) { provider.loadCallLog();
return _buildCallRecordItem(context, provider.callLogs?[index]); yjPrint("onRefresh");
}, },
child: ListView.builder(
itemCount: provider.callLogs?.length ?? 0,
itemBuilder: (context, index) {
return _buildCallRecordItem(context, provider.callLogs?[index]);
},
),
), ),
)), )),
Container( Container(
@ -122,7 +127,8 @@ class ReserveLeftContentView extends StatelessWidget {
/// _buildCallRecordItem item /// _buildCallRecordItem item
Widget _buildCallRecordItem(BuildContext context, CallLogModel? model) { Widget _buildCallRecordItem(BuildContext context, CallLogModel? model) {
ReserveLogModel? reserveLogModel = provider.getReserveLogModel(model?.number ?? ""); ReserveLogModel? reserveLogModel =
provider.getReserveLogModel(model?.number ?? "");
return Container( return Container(
padding: const EdgeInsets.fromLTRB(15, 15, 15, 5), padding: const EdgeInsets.fromLTRB(15, 15, 15, 5),
child: Column( child: Column(
@ -168,16 +174,16 @@ class ReserveLeftContentView extends StatelessWidget {
), ),
Text( Text(
"已消费${reserveLogModel?.consumeOrders ?? '0'}", "已消费${reserveLogModel?.consumeOrders ?? '0'}",
style: style: const TextStyle(
const TextStyle(color: Color(0xff333333), fontSize: 14), color: Color(0xff333333), fontSize: 14),
), ),
const SizedBox( const SizedBox(
width: 15, width: 15,
), ),
Text( Text(
"已撤${reserveLogModel?.cancelOrders ?? '0'}", "已撤${reserveLogModel?.cancelOrders ?? '0'}",
style: style: const TextStyle(
const TextStyle(color: Color(0xff333333), fontSize: 14), color: Color(0xff333333), fontSize: 14),
), ),
], ],
), ),
@ -713,7 +719,9 @@ class ReserveLeftContentView extends StatelessWidget {
], ],
), ),
), ),
const SizedBox(width: 10,), const SizedBox(
width: 10,
),
SizedBox( SizedBox(
height: inputItemHeight, height: inputItemHeight,
width: itemWidth, width: itemWidth,
@ -727,7 +735,10 @@ class ReserveLeftContentView extends StatelessWidget {
provider.updateBookingStandard(value ?? "table"); provider.updateBookingStandard(value ?? "table");
}, },
), ),
const Text('元/桌', style: TextStyle(fontSize: 12, color: Color(0xff666666)),), const Text(
'元/桌',
style: TextStyle(fontSize: 12, color: Color(0xff666666)),
),
Radio<String>( Radio<String>(
value: "person", value: "person",
groupValue: provider.bookingStandardType, groupValue: provider.bookingStandardType,
@ -735,7 +746,10 @@ class ReserveLeftContentView extends StatelessWidget {
provider.updateBookingStandard(value ?? "person"); provider.updateBookingStandard(value ?? "person");
}, },
), ),
const Text('元/人', style: TextStyle(fontSize: 12, color: Color(0xff666666)),), const Text(
'元/人',
style: TextStyle(fontSize: 12, color: Color(0xff666666)),
),
], ],
), ),
) )
@ -787,7 +801,8 @@ class ReserveLeftContentView extends StatelessWidget {
); );
} }
Widget _buildBookingActionBtn(BuildContext context, String title, Function() onTap) { Widget _buildBookingActionBtn(
BuildContext context, String title, Function() onTap) {
return InkWell( return InkWell(
onTap: onTap, onTap: onTap,
child: Container( child: Container(
@ -796,7 +811,10 @@ class ReserveLeftContentView extends StatelessWidget {
color: Colors.blue, color: Colors.blue,
), ),
padding: const EdgeInsets.fromLTRB(20, 5, 20, 5), padding: const EdgeInsets.fromLTRB(20, 5, 20, 5),
child: Text(title, style: const TextStyle(color: Colors.white, fontSize: 14),), child: Text(
title,
style: const TextStyle(color: Colors.white, fontSize: 14),
),
), ),
); );
} }

View File

@ -158,6 +158,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
easy_refresh:
dependency: "direct main"
description:
name: easy_refresh
sha256: "486e30abfcaae66c0f2c2798a10de2298eb9dc5e0bb7e1dba9328308968cae0c"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.4.0"
encrypt: encrypt:
dependency: "direct main" dependency: "direct main"
description: description:
@ -418,6 +426,22 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.9.0" version: "1.9.0"
path_drawing:
dependency: transitive
description:
name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.1"
path_parsing:
dependency: transitive
description:
name: path_parsing
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
path_provider: path_provider:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -49,6 +49,7 @@ dependencies:
encrypt: ^5.0.3 encrypt: ^5.0.3
pointycastle: ^3.9.1 pointycastle: ^3.9.1
url_launcher: ^6.3.1 url_launcher: ^6.3.1
easy_refresh: ^3.4.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: