原文
https://medium.com/halkbank-m...
程式碼
https://github.com/deremakif/...
參考
- https://pub.dev/packages/path...
- https://pub.dev/packages/flut...
- https://pub.dev/packages/flowder
- https://pub.dev/packages/open...
- https://pub.dev/packages/perc...
正文
今天我要寫一篇關於 flowder package 的文章。我用它從伺服器上下載檔案。有很多方法可以做到這一點,而且還有更受歡迎的軟體包如 flutter_downloader 。但我更喜歡 flowder 軟體包,因為它的實現很簡單。
首先,如果下載資料夾不存在,我們應該建立它。要做到這一點,我們需要匯入 path_provider package。並在當前頁的 initState()
中呼叫 initPlatformState
方法。
Future<void> initPlatformState() async {
_setPath();
if (!mounted) return;
}void _setPath() async {
Directory _path = await getApplicationDocumentsDirectory();
String _localPath = _path.path + Platform.pathSeparator + 'Download';
final savedDir = Directory(_localPath);
bool hasExisted = await savedDir.exists();
if (!hasExisted) {
savedDir.create();
}
path = _localPath;
}
現在,我們有下載資料夾來儲存檔案。包的下載方法需要兩個引數: URL 和選項。您可以根據需要自定義選項。
ElevatedButton(
onPressed: () async {
options = DownloaderUtils(
progressCallback: (current, total) {
final progress = (current / total) * 100;
print('Downloading: $progress');
},
file: File('$path/loremipsum.pdf'),
progress: ProgressImplementation(),
onDone: () {
OpenFile.open('$path/loremipsum.pdf');
},
deleteOnCancel: true,
); core = await Flowder.download(
"https://assets.website-files.com/603d0d2db8ec32ba7d44fffe/603d0e327eb2748c8ab1053f_loremipsum.pdf",
options,
);
},
我使用 OpenFile package 包在檔案完成下載過程時開啟它。我還使用了 percent_indicator package 包來顯示進展。
如果以後不需要使用該檔案,可以在關閉文件後刪除該檔案。重要的是不要增加應用程式的大小。
OpenFile.open('$path/loremipsum.pdf').then((value) {
File f = File('$path/loremipsum.pdf');
f.delete();
});
- 應用程式演示
示例專案的原始碼。
- GitHub - deremakif/FlowderSample
https://github.com/deremakif/...
© 貓哥
- https://ducafecat.tech/
- https://github.com/ducafecat
- 微信群 ducafecat