poem_search_presenter.dart
1.68 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
import 'package:Parlando/mvp/base_page_presenter.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:Parlando/poem/iview/poem_search_iview.dart';
import 'package:Parlando/poem/models/search_entity.dart';
import 'package:Parlando/widgets/state_layout.dart';
class PoemSearchPresenter extends BasePagePresenter<PoemSearchIMvpView> {
Future search(String text, int page, bool isShowDialog) {
final Map<String, String> params = <String, String>{};
params['q'] = text;
params['page'] = page.toString();
params['l'] = 'Dart';
return requestNetwork<SearchEntity>(Method.get,
url: HttpApi.search,
queryParameters: params,
isShow: isShowDialog,
onSuccess: (data) {
if (data != null && data.items != null) {
/// 一页30条数据,等于30条认为有下一页
/// 具体的处理逻辑根据具体的接口情况处理,这部分可以抽离出来
view.provider.hasMore = data.items!.length == 30;
if (page == 1) {
/// 刷新
view.provider.list.clear();
if (data.items!.isEmpty) {
view.provider.setStateType(StateType.order);
} else {
view.provider.addAll(data.items!);
}
} else {
view.provider.addAll(data.items!);
}
} else {
/// 加载失败
view.provider.hasMore = false;
view.provider.setStateType(StateType.network);
}
},
onError: (_, __) {
/// 加载失败
view.provider.hasMore = false;
view.provider.setStateType(StateType.network);
}
);
}
}