一、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.