当前位置: 首页 > news >正文

梁山网站建设费用深圳优化公司排名

梁山网站建设费用,深圳优化公司排名,网站开发案例详解光盘下载,中国企业网官方网站查询Dio dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。 这个就不介绍了,网上有很多的封装案例。 background_downloader 简介 适用于iOS,Android,MacOS,Windows和L…

Dio

dio是一个强大的Dart Http请求库,提供了丰富的功能和易于使用的API,支持文件上传和下载。
这个就不介绍了,网上有很多的封装案例。

background_downloader

简介
适用于iOS,Android,MacOS,Windows和Linux的后台文件下载器和上传器。

官方文档
https://pub-web.flutter-io.cn/packages/background_downloader

安装

flutter pub add background_downloader

示例1:下载

class _MyHomePageState extends State<MyHomePage> {// 文件信息String fileInfo = '';// 下载进度double progress = 0.0;// 任务状态String taskStatus = '';// 任务late DownloadTask task;// 下载单个文件_downloadFile() async {task = DownloadTask(url:'https://vd3.bdstatic.com/mda-ma6igm4b0znfbqve/sc/cae_h264_nowatermark/1609998111/mda-ma6igm4b0znfbqve.mp4', // 下载地址// urlQueryParameters: {'q': 'pizza'},  // 请求参数filename: 'mov_bbb.mp4', // 文件名//headers: {'myHeader': 'value'},  请求头directory: 'my_sub_directory', // 文件存储目录updates: Updates.statusAndProgress, // 更新任务状态和下载进度requiresWiFi: true, // 使用wifiretries: 5, // 下载的重试次数allowPause: true, // 运行暂停metaData: 'data for me' // 元数据,可以存储一些对于下载任务有用的信息,方便后续相关操作);// 监听下载final result =await FileDownloader().download(task, onProgress: (progress) {setState(() {this.progress = progress;});}, onStatus: (states) {String msg = '';if (states == TaskStatus.complete) {msg = '下载完成';//  下载完成后,将文件移动到共享目录后,其他应用也可以访问。否则只能在本应用内访问FileDownloader().moveToSharedStorage(task, SharedStorage.downloads);} else if (states == TaskStatus.canceled) {msg = '已取消';setState(() {progress = 0;});} else if (states == TaskStatus.paused) {msg = '已暂停';} else if (states == TaskStatus.running) {msg = '下载中...';} else {msg = '下载失败';}setState(() {taskStatus = msg;});});}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: Column(children: [const SizedBox(height: 20,),Text("文件信息:$fileInfo"),const SizedBox(height: 20,),Row(children: [const Text("下载进度:"),Expanded(child: LinearProgressIndicator(value: progress,backgroundColor: Colors.greenAccent,valueColor: const AlwaysStoppedAnimation<Color>(Colors.red),)),Text("${(progress * 100).toStringAsFixed(1)}%")],),Text("任务状态:$taskStatus"),const SizedBox(height: 20,),Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly,mainAxisSize: MainAxisSize.max,children: [ElevatedButton(onPressed: _downloadFile, child: const Text("下载")),ElevatedButton(onPressed: () async {// 暂停任务await FileDownloader().pause(task);},child: const Text("暂停")),ElevatedButton(onPressed: () async {//  根据固定的任务id取消await FileDownloader().cancelTaskWithId(task.taskId);// 取消所有//FileDownloader().cancelTasksWithIds(taskIds)},child: const Text("取消")),ElevatedButton(onPressed: () async {await FileDownloader().resume(task);},child: const Text("恢复"))],)],));}
}

注意:

  • 默认下载的文件是在本应用内,其他应用无访问权限。要想要被访问到需要在下载完成后执行 FileDownloader().moveToSharedStorage(task, SharedStorage.downloads);
  • 点击暂停后,再点击恢复可以继续下载。点击取消后,再点击恢复无法继续下载。

在这里插入图片描述

在这里插入图片描述

示例2:上传

/// define the multi-part upload task (subset of parameters shown)
final task = UploadTask(url: 'https://myserver.com/uploads',filename: 'myData.txt',fields: {'datafield': 'value'},fileField: 'myFile', updates: Updates.statusAndProgress // request status and progress updates
);// Start upload, and wait for result. Show progress and status changes
// while uploading
final result = await FileDownloader().upload(task,onProgress: (progress) => print('Progress: ${progress * 100}%'),onStatus: (status) => print('Status: $status')
);// Act on result, similar to download

这个没有服务器,没有尝试,上面的是官方例子。

示例3:批量下载

final tasks = [task1, task2, task3]; // a list of Download tasks// download the batch
final result = await FileDownloader().downloadBatch(tasks,batchProgressCallback: (succeeded, failed) =>print('Completed ${succeeded + failed} out of ${tasks.length}, $failed failed')
);

使用DownloadTask会返回一个任务,多个任务可以使用downloadBatch来进行批量下载。

示例4:发起通知

按照官方例子试了一下,一直没有发起通知。
我这里的问题是app没有通知权限,在设置里也无法开启通知。
如果你也没有成功的话,可以使用flutter_local_notifications来实现通知功能
Flutter:flutter_local_notifications——消息推送的学习
在这里插入图片描述

示例5:打开下载文件

  _downloadFile() async {task = DownloadTask(url:'https://ppt.1ppt.com/uploads/soft/2307/1-230H1092638.zip', // 下载地址// urlQueryParameters: {'q': 'pizza'},  // 请求参数filename: '1-230H1092638.zip', // 文件名//headers: {'myHeader': 'value'},  请求头directory: 'my_sub_directory', // 文件存储目录baseDirectory: BaseDirectory.applicationSupport,updates: Updates.statusAndProgress, // 更新任务状态和下载进度requiresWiFi: true, // 使用wifiretries: 5, // 下载的重试次数allowPause: true, // 运行暂停metaData: 'data for me' // 元数据,可以存储一些对于下载任务有用的信息,方便后续相关操作);// 监听下载final result =await FileDownloader().download(task, onProgress: (progress) {setState(() {this.progress = progress;});}, onStatus: (states) async{String msg = '';if (states == TaskStatus.complete) {msg = '下载完成';await FileDownloader().openFile(task: task);print("路径:${await task.filePath()}");} else if (states == TaskStatus.canceled) {msg = '已取消';setState(() {progress = 0;});} else if (states == TaskStatus.paused) {msg = '已暂停';} else if (states == TaskStatus.running) {msg = '下载中...';} else {msg = '下载失败';}setState(() {taskStatus = msg;});});}

注意:

  • 必须要添加 baseDirectory: BaseDirectory.applicationSupport,,否则是无法打开文件的
  • 如果要打开文件,那么就不能使用FileDownloader().moveToSharedStorage(task, SharedStorage.downloads);移动文件,会导致找不到文件进而打不开。另外打开文件时会调用你手机里有的应用程序打开,我试了一下图片、mp4下载完成后是可以直接打开的,但是zip这样的文件是无法直接打开的,这时会让你选择你手机里的应用来打开。

遇到的问题

在这里插入图片描述
这是因为background_downloader要求最小的sdk版本是24,而Flutter会自动设置minSdkVersion为16(Android 4.1),在你的Flutter项目的android/app/build.gradle文件中,将minSdkVersion更改为24或更高的版本。然后运行flutter clean清理项目,并重新构建你的应用程序。
在这里插入图片描述
从flutter仓库找到了该问题的解决方案:https://github.com/flutter/flutter/issues/119247

android / app/build.gradle文件中添加

configurations.all {resolutionStrategy {eachDependency {if ((requested.group == "org.jetbrains.kotlin") && (requested.name.startsWith("kotlin-stdlib"))) {useVersion("1.8.0")}}}
}

文章转载自:
http://bootblack.c7622.cn
http://stink.c7622.cn
http://grudge.c7622.cn
http://wastelot.c7622.cn
http://wll.c7622.cn
http://escharotic.c7622.cn
http://hemishere.c7622.cn
http://caper.c7622.cn
http://antismog.c7622.cn
http://lampion.c7622.cn
http://unmingled.c7622.cn
http://testimonial.c7622.cn
http://zoom.c7622.cn
http://endosmosis.c7622.cn
http://broadtail.c7622.cn
http://bruin.c7622.cn
http://seizor.c7622.cn
http://heliotaxis.c7622.cn
http://aneurysm.c7622.cn
http://noninterference.c7622.cn
http://ashkhabad.c7622.cn
http://uninsured.c7622.cn
http://match.c7622.cn
http://oven.c7622.cn
http://cascalho.c7622.cn
http://angelophany.c7622.cn
http://ingrowth.c7622.cn
http://elastivity.c7622.cn
http://phototube.c7622.cn
http://closeness.c7622.cn
http://arborvitae.c7622.cn
http://woodhouse.c7622.cn
http://liveweight.c7622.cn
http://adsuki.c7622.cn
http://lawny.c7622.cn
http://fascinator.c7622.cn
http://geophilous.c7622.cn
http://apple.c7622.cn
http://incorporable.c7622.cn
http://grysbok.c7622.cn
http://sorbian.c7622.cn
http://physiotherapeutic.c7622.cn
http://curtly.c7622.cn
http://ivory.c7622.cn
http://defalcation.c7622.cn
http://formant.c7622.cn
http://sonagram.c7622.cn
http://bicorne.c7622.cn
http://disturb.c7622.cn
http://creesh.c7622.cn
http://hypochlorite.c7622.cn
http://aceldama.c7622.cn
http://geegaw.c7622.cn
http://portly.c7622.cn
http://along.c7622.cn
http://emmenagogue.c7622.cn
http://masculine.c7622.cn
http://bleaching.c7622.cn
http://leavings.c7622.cn
http://luckily.c7622.cn
http://trichinelliasis.c7622.cn
http://plan.c7622.cn
http://schussboom.c7622.cn
http://deject.c7622.cn
http://doodling.c7622.cn
http://indexical.c7622.cn
http://vibratory.c7622.cn
http://captan.c7622.cn
http://saltpetre.c7622.cn
http://bail.c7622.cn
http://grime.c7622.cn
http://pore.c7622.cn
http://handicap.c7622.cn
http://mowburnt.c7622.cn
http://mourner.c7622.cn
http://gullywasher.c7622.cn
http://pneumogram.c7622.cn
http://disintegrate.c7622.cn
http://asbestoidal.c7622.cn
http://dental.c7622.cn
http://ristocetin.c7622.cn
http://spritsail.c7622.cn
http://cardiotomy.c7622.cn
http://marvel.c7622.cn
http://judea.c7622.cn
http://latter.c7622.cn
http://jook.c7622.cn
http://babel.c7622.cn
http://ogpu.c7622.cn
http://imu.c7622.cn
http://outran.c7622.cn
http://briery.c7622.cn
http://scalar.c7622.cn
http://miscellanist.c7622.cn
http://voraciously.c7622.cn
http://annexment.c7622.cn
http://hydrics.c7622.cn
http://jacobus.c7622.cn
http://mandarin.c7622.cn
http://limply.c7622.cn
http://www.zhongyajixie.com/news/77910.html

相关文章:

  • 整网站代码 带数据 免费 下载常熟seo关键词优化公司
  • 网站首页自动下拉广告常用搜索引擎有哪些
  • 建设导航网站费用吗口碑好的设计培训机构
  • 中山有哪些网站建立公司百度账号管理中心
  • 规模大的企业建站大连seo外包平台
  • 周至做网站资源网站优化排名优化
  • wordpress 宝塔免费的seo网站下载
  • 佛山网站建设永网南京seo优化培训
  • 网站建设要花钱吗热搜词工具
  • 海珠网站建设深圳网络推广最新招聘
  • 制造企业erp管理系统天津站内关键词优化
  • wordpress 教程 推荐seo诊断专家
  • wordpress如何添加备案号代码聊城网站seo
  • 网站建设流程表百度网站收录提交入口全攻略
  • 网站建设的条件分析网络广告营销案例
  • 狗和人做网站google关键词搜索量
  • 网站cms建设杭州线上推广
  • 网络舆情分析的免费网站新塘网站seo优化
  • 优秀的个人网站设计模板谷歌搜索引擎官网
  • 网站越来越难做广州seo公司哪个比较好
  • 深圳建设网站过程营销型网站建设的公司
  • 交河做网站微信搜一搜seo
  • 百度关键词优化大师北京网站快速优化排名
  • wordpress怎么让文章页新窗口打开seow是什么意思
  • 制定 网站改版优化方案百度电脑端网页版入口
  • 上海网站建设中心关键词竞价排名名词解释
  • 许昌市建设路小学网站百度seo排名如何提升
  • 开县做网站手游代理加盟哪个平台最强大
  • 上海企业建站流程搜索量查询百度指数
  • 微信小程序 网站开发昆明seo网站管理