order_search_page.dart
3.65 KB
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import 'package:flutter/material.dart';
import 'package:one_poem/account/models/user_entity.dart';
import 'package:one_poem/mvp/base_page.dart';
import 'package:one_poem/mvp/power_presenter.dart';
import 'package:one_poem/order/iview/order_search_iview.dart';
import 'package:one_poem/order/models/search_entity.dart';
import 'package:one_poem/order/presenter/order_search_presenter.dart';
import 'package:one_poem/order/provider/base_list_provider.dart';
import 'package:one_poem/shop/iview/shop_iview.dart';
import 'package:one_poem/shop/presenter/shop_presenter.dart';
import 'package:one_poem/widgets/my_refresh_list.dart';
import 'package:one_poem/widgets/search_bar.dart';
import 'package:one_poem/widgets/state_layout.dart';
import 'package:oktoast/oktoast.dart';
import 'package:provider/provider.dart';
import 'package:one_poem/util/other_utils.dart';
/// design/3订单/index.html#artboard8
class OrderSearchPage extends StatefulWidget {
const OrderSearchPage({Key? key}) : super(key: key);
@override
_OrderSearchPageState createState() => _OrderSearchPageState();
}
class _OrderSearchPageState extends State<OrderSearchPage> with BasePageMixin<OrderSearchPage, PowerPresenter> implements OrderSearchIMvpView, ShopIMvpView {
@override
BaseListProvider<SearchItems> provider = BaseListProvider<SearchItems>();
late String _keyword;
int _page = 1;
@override
void initState() {
/// 默认为加载中状态,本页面场景默认为空
provider.stateType = StateType.empty;
super.initState();
}
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider<BaseListProvider<SearchItems>>(
create: (_) => provider,
child: Scaffold(
appBar: SearchBar(
hintText: '请输入手机号或姓名查询',
onPressed: (text) {
if (text.isEmpty) {
showToast('搜索关键字不能为空!');
return;
}
_keyword = text;
provider.setStateType(StateType.loading);
_page = 1;
_orderSearchPresenter.search(_keyword, _page, true);
},
),
body: Consumer<BaseListProvider<SearchItems>>(
builder: (_, provider, __) {
return DeerListView(
key: const Key('order_search_list'),
itemCount: provider.list.length,
stateType: provider.stateType,
onRefresh: _onRefresh,
loadMore: _loadMore,
itemExtent: 50.0,
hasMore: provider.hasMore,
itemBuilder: (_, index) {
return Container(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
alignment: Alignment.centerLeft,
child: Text(provider.list[index].name.nullSafe),
);
},
);
}
),
),
);
}
Future<void> _onRefresh() async {
_page = 1;
await _orderSearchPresenter.search(_keyword, _page, false);
}
Future<void> _loadMore() async {
_page++;
await _orderSearchPresenter.search(_keyword, _page, false);
}
late OrderSearchPresenter _orderSearchPresenter;
late ShopPagePresenter _shopPagePresenter;
@override
PowerPresenter createPresenter() {
final PowerPresenter powerPresenter = PowerPresenter<dynamic>(this);
_orderSearchPresenter = OrderSearchPresenter();
_shopPagePresenter = ShopPagePresenter();
powerPresenter.requestPresenter([_orderSearchPresenter, _shopPagePresenter]);
return powerPresenter;
}
@override
bool get isAccessibilityTest => false;
@override
void setUser(UserEntity? user) {
showToast(user?.name ?? '');
}
}