work 1.0.1 copy "work: ^1.0.1" to clipboard
work: ^1.0.1 copied to clipboard

outdated

Encapsulate http business interface protocol, provide limited extension functions, isolate the underlying implementation method of http (currently based on dio).

example/lib/main.dart

import 'dart:io';

import 'package:work/work.dart';
import 'package:json_annotation/json_annotation.dart';

part 'main.g.dart';

void main() async {
  final data = await TestWork('xxx').start();

  if (data.success) {
    print(data.result);
  } else {
    print(data.message);
    print(data.errorCode);
  }

  final download = await DownloadWork(
    path: 'file:/xxx/test.jpg',
    key: 'key',
    resNo: 123,
  ).start();

  if (download.success) {
    // show('file:/xxx/test.jpg')
  }

  final upload = await UploadWork(File('test.jpg')).start();

  if (data.success) {
    print(data.result);
  }
}

class TestWork extends SimpleWork<String> {
  TestWork(this.param1);

  /// 请求参数1
  final String param1;

  @override
  String onExtractResult(resultData, data) => resultData['account'];

  @override
  String onUrl() => 'https://api.example.com/test';

  @override
  Map<String, dynamic> onFillParams() => {'param1': param1};

  @override
  String onNetworkError(data) => '网络连接失败,当前网络不可用';

  @override
  String onNetworkRequestFailed(data) => '请求失败,服务器异常';

  @override
  String onParseFailed(data) => '请求失败,服务器异常';

  @override
  String onRequestFailedMessage(data) => data.response.data['message'] ?? '操作失败';

  @override
  String onRequestSuccessMessage(data) => data.response.data['message'] ?? '';
}

@JsonSerializable()
class DownloadWork extends SimpleDownloadWork {
  DownloadWork({this.path, this.key, this.resNo});

  /// 存放路径
  @JsonKey(ignore: true)
  final String path;

  /// 请求参数key
  final String key;

  /// 请求参数resNo
  final int resNo;

  @override
  Map<String, dynamic> onFillParams() => _$DownloadWorkToJson(this);

  @override
  String onDownloadPath() => path;

  @override
  String onUrl() => 'https://api.example.com/test.jpg';
}

@JsonSerializable()
class UploadWork extends SimpleWork<String> {
  UploadWork(this.file);

  /// 需要上传的文件
  @JsonKey(toJson: workFileToJsonConvert)
  final File file;

  /// 假设返回的结果"result"标签对应的是文件的网络地址
  @override
  String onExtractResult(resultData, data) => resultData;

  @override
  String onUrl() => 'https://api.example.com/upload';

  @override
  Map<String, dynamic> onFillParams() => _$UploadWorkToJson(this);
}
1
likes
0
points
524
downloads

Publisher

unverified uploader

Weekly Downloads

Encapsulate http business interface protocol, provide limited extension functions, isolate the underlying implementation method of http (currently based on dio).

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

dio, flutter, http_parser, meta, mime, path, pedantic

More

Packages that depend on work