一、Android
1.引入插件
permission_handler: 5.0.1+1 #權限請求 path_provider: 1.6.14 #路徑 flutter_downloader: 1.4.4 #下載
2. androidmanifest.xml
<!--網絡權限--> <uses-permission android:name="android.permission.INTERNET"/> <!-- 讀寫存儲權限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 安裝權限 --> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <application android:networkSecurityConfig="@xml/network_security_config"><!--網絡安裝配置--> <!--下載需要的配置--> <provider android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider" android:authorities="${applicationId}.flutter_downloader.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths"/> </provider> </application>
3.
class _DownTestState extends State<DownTest> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(), body: Center( child: MaterialButton( child: Text("data",style: TextStyle(color: Colors.white),), color: Colors.blue, onPressed: (){ ()async{ //獲得臨時地址 Directory tempDir = await getTemporaryDirectory(); String tempPath = tempDir.path; print(tempPath); //請求下載地址 final taskId = await FlutterDownloader.enqueue( url: 'http://192.168.18.14:5000/down/1.apk',//下載地址 savedDir: tempPath,//保存路徑 showNotification: true, // show download progress in status bar (for Android) openFileFromNotification: true, // click on notification to open downloaded file (for Android) ); print("taskId:"+taskId); }(); }, ), ), ); } void initState() { //請求權限 ()async{ Map<Permission, PermissionStatus> statuses = await [ Permission.storage].request(); }(); //初始化 () async{ WidgetsFlutterBinding.ensureInitialized(); await FlutterDownloader.initialize( debug: true // optional: set false to disable printing logs to console ); //監聽回調 FlutterDownloader.registerCallback(downloadCallback); }(); } //下載回調方法 static void downloadCallback(String id, DownloadTaskStatus status, int progress) { print("id:" + id); print("status:" + status.toString()); print("progress:" + progress.toString()); } }
二、IOS
1.開啟background mode
2.添加sqlite
3.