【问题标题】:Upload in background on Flutter在 Flutter 后台上传
【发布时间】:2021-03-24 23:53:38
【问题描述】:

在后台上传数据的最佳方式是什么,但不要在用户切换屏幕时取消此上传?我还想在上传完成时显示 Snackbar(即使我已经在不同的屏幕上)。

在 Android 上,我一直在使用 Service + BroadcastReceiver 或 WorkManager。我在 Flutter 中找不到这样做的方法。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    你可以使用包https://pub.dev/packages/flutter_uploader
    此插件基于Android 中的WorkManageriOS 中的NSURLSessionUploadTask 以后台模式运行上传任务。

    新建上传任务:

    final uploader = FlutterUploader();
    
    final taskId = await uploader.enqueue(
      url: "your upload link", //required: url to upload to
      files: [FileItem(filename: filename, savedDir: savedDir, fieldname:"file")], // required: list of files that you want to upload
      method: UploadMethod.POST, // HTTP method  (POST or PUT or PATCH)
      headers: {"apikey": "api_123456", "userkey": "userkey_123456"},
      data: {"name": "john"}, // any data you want to send in upload request
      showNotification: false, // send local notification (android only) for upload status
      tag: "upload 1"); // unique tag for upload task
    );
    

    监听上传进度

    final subscription = uploader.progress.listen((progress) {
      //... code to handle progress
    });
    

    对于Snackbar,你可以使用ScaffoldMessenger来制作Snackbarpersist across routeshttps://flutter.dev/docs/release/breaking-changes/scaffold-messenger

    ScaffoldMessenger 现在处理SnackBars 以便persist across routes 并始终显示在当前脚手架上。默认情况下,一个根 ScaffoldMessenger 包含在 MaterialApp
    ScaffoldMessenger 创建了一个作用域,所有后代Scaffolds 都在其中注册以接收 SnackBar,这就是它们在这些转换中持续存在的方式。使用MaterialApp提供的根ScaffoldMessenger
    代码sn-p

    ScaffoldMessenger.of(context).showSnackBar(SnackBar(
            content: const Text('snack'),
            duration: const Duration(seconds: 1),
            action: SnackBarAction(
              label: 'ACTION',
              onPressed: () { },
            ),
          ));
    

    【讨论】:

      【解决方案2】:

      你可以使用这个飞镖包workmanager

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多