convert_flutter.dart 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. import 'package:ConversionFlutterDemo/models/convert_bean.dart';
  2. import 'package:ConversionFlutterDemo/models/convert_contain_options_bean.dart';
  3. import 'package:ConversionFlutterDemo/states/convert_provider.dart';
  4. import 'package:flutter/cupertino.dart';
  5. import 'package:flutter/services.dart';
  6. import 'package:provider/provider.dart';
  7. ///Use ‘EventChannel’ to communicate with Android\ios for file conversion.
  8. class ConvertFlutter {
  9. static const EventChannel _channel =
  10. EventChannel('com.compdfkit.conversion.flutter.convert');
  11. void convert(BuildContext context, ConvertBean bean) {
  12. _channel.receiveBroadcastStream(bean.getOptions()).listen((event) {
  13. Map<dynamic, dynamic> result = event;
  14. String tag = result['dataTag'];
  15. int progress = result['progress'];
  16. int status = result['status'];
  17. context.read<ConvertProvider>().updateStatus(tag, progress, status, null);
  18. if (status == convertSuccess || status == convertFail) {
  19. context
  20. .read<ConvertProvider>()
  21. .updateStatus(tag, progress, status, result['outputPath']);
  22. ConvertBean nextBean =
  23. context.read<ConvertProvider>().getNextConvertBean();
  24. convert(context, nextBean);
  25. }
  26. }, onDone: () {}, onError: (object) {});
  27. }
  28. }