poem_search_presenter.dart 1.68 KB
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);
      }
    );
  }

}