gpt4 book ai didi

flutter - 在 Flutter 后台上传

转载 作者:行者123 更新时间:2023-12-05 02:43:46 26 4
gpt4 key购买 nike

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

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

最佳答案

你可以使用包 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 来制作 Snackbar persist across routes https://flutter.dev/docs/release/breaking-changes/scaffold-messenger

ScaffoldMessenger 现在处理 SnackBars跨路由持久化 并始终显示在当前 Scaffold 上。默认情况下,根 ScaffoldMessenger 包含在 MaterialApp
ScaffoldMessenger 创建一个范围,所有后代 Scaffolds 都在其中注册以接收 SnackBars,这就是它们在这些转换中持续存在的方式。使用 MaterialApp
提供的根 ScaffoldMessenger 时代码片段

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

关于flutter - 在 Flutter 后台上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66791102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com