123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import 'dart:io';
- import 'package:dio/dio.dart';
- import 'package:liftmanager/net/api_service.dart';
- import 'package:liftmanager/net/dio_utils.dart';
- import 'package:liftmanager/net/error_handle.dart';
- import 'package:meta/meta.dart';
- import 'mvps.dart';
- class BasePagePresenter<V extends IMvpView> extends IPresenter {
- V view;
- CancelToken _cancelToken;
- BasePagePresenter(){
- _cancelToken = CancelToken();
- }
- @override
- void deactivate() {}
- @override
- void didChangeDependencies() {}
- @override
- void didUpdateWidgets<W>(W oldWidget) {}
- @override
- void dispose() {
- /// 销毁时,将请求取消
- if (!_cancelToken.isCancelled){
- _cancelToken.cancel();
- }
- }
- @override
- void initState() {}
- /// 返回Future 适用于刷新,加载更多
- Future requestNetwork<T>(Method method, {@required String url, bool isShow : true, bool isClose: true, Function(T t) onSuccess,
- Function(List<T> list) onSuccessList, Function(int code, String msg) onError, dynamic params,
- Map<String, dynamic> queryParameters, CancelToken cancelToken, Options options, bool isList : false}) async {
- if (isShow) view.showProgress();
- await DioUtils.instance.requestNetwork<T>(method, url,
- params: params,
- queryParameters: queryParameters,
- options: options,
- cancelToken: cancelToken?? _cancelToken,
- onSuccess: (data){
- if (isClose) view.closeProgress();
- if (onSuccess != null) {
- onSuccess(data);
- }
- },
- onSuccessList: (data){
- if (isClose) view.closeProgress();
- if (onSuccessList != null) {
- onSuccessList(data);
- }
- },
- onError: (code, msg){
- _onError(code, msg, onError);
- }
- );
- }
- void asyncRequestNetwork<T>(Method method, {@required String url, bool isShow : true, bool isClose: true, Function(T t) onSuccess, Function(List<T> list) onSuccessList, Function(int code, String msg) onError,
- dynamic params, Map<String, dynamic> queryParameters, CancelToken cancelToken, Options options, bool isList : false}){
- if (isShow) view.showProgress();
- DioUtils.instance.asyncRequestNetwork<T>(method, url,
- params: params,
- queryParameters: queryParameters,
- options: options,
- cancelToken: cancelToken?? _cancelToken,
- isList: isList,
- onSuccess: (data){
- if (isClose) view.closeProgress();
- if (onSuccess != null) {
- onSuccess(data);
- }
- },
- onSuccessList: (data){
- if (isClose) view.closeProgress();
- if (onSuccessList != null) {
- onSuccessList(data);
- }
- },
- onError: (code, msg){
- _onError(code, msg, onError);
- }
- );
- }
- /// 上传图片实现
- Future<String> uploadImg(File image) async{
- String imgPath = "";
- try{
- String path = image.path;
- var name = path.substring(path.lastIndexOf("/") + 1);
- FormData formData = FormData.fromMap({
- "uploadIcon": await MultipartFile.fromFile(path, filename: name)
- });
- await requestNetwork<String>(Method.post,
- url: ApiUrl.account_smscode,
- params: formData,
- onSuccess: (data){
- imgPath = data;
- }
- );
- }catch(e){
- view.showToast("图片上传失败!");
- }
- return imgPath;
- }
- _onError(int code, String msg, Function(int code, String msg) onError){
- /// 异常时直接关闭加载圈,不受isClose影响
- view.closeProgress();
- if (code != ExceptionHandle.cancel_error){
- view.showToast(msg);
- }
- /// 页面如果dispose,则不回调onError
- if (onError != null && view.getContext() != null) {
- onError(code, msg);
- }
- }
- }
|