-
flutter怎么手动刷新_Flutter 怎样更新?怎样升级? - Flutter - Angular 教程网
2020-12-28 23:00:33正好,在7月11号的时候flutter更新到了1.7 版本具体的更新更新内容:https://flutter-io.cn/posts/announcing-flutter-1-7-9.html既然这样的话,那我们也来先更新一下吧。flutter SDK的更新升级命令是...正好,在7月11号的时候 flutter 更新到了 1.7 版本
具体的更新更新内容:
https://flutter-io.cn/posts/announcing-flutter-1-7-9.html
既然这样的话,那我们也来先更新一下吧。
flutter SDK的更新升级命令是flutter upgrade
flutter upgrade
但是!!!不要着急直接输入,不然就会Error 伺候……
flutter upgrade - error
还记得上一篇中说到:添加阿里云(aliyun)提供的maven仓库镜像。
对,没错!我们先要将这些镜像内容进行剔除,还原代码原来的亚子……
还原前
还原后
一定要记得噢,不要有前后空行或者空格,严格一致噢!!不然还是会 Error 伺候的。当然,你如果熟悉 git 操作的话,那么就可以使用 stash 来处理这个问题了。
还原好后就可以在flutter SDK文件夹下输入git pull等待文件传输完成。
git pull
这就升级完了?
当然不是,但是这时候我们就可以使用升级命令了。
flutter upgrade
如果你的网络是正常的,那么稍微等一下就可以升级完成了。
这里居然忘了截图……对不起
如果出现了错误……
错误???
那你一定是没有好好看上一篇文章的内容!!!
现在立刻马上赶紧回去复习!!!
升级完成后,我们可以根据官方的说明,建议我们追踪使用 stable 的分支,这是 Flutter稳定分支。
Flutter中文网 - 升级:
https://flutterchina.club/upgrading/
要查看您当前使用的分支,请运行flutter channel查看。
flutter channel
flutter channel - master
这表示你的flutter SKD默认是 master 分支,这是开发分支并不稳定。
所以我们需要手动切换到 stable 的分支上。但是切换之前,我们需要做一个小小的改动。
Flutter->bin->cache删除文件夹内所有文件。
放心啦,不会出问题的,相信我没错的
这时候我们就可以使用flutter channel stable进行分支切换了。
flutter channel stable
等待分支数据切换……
flutter channelstable
这时候我们再次使用flutter channel查看分支。
flutter channel
等待数据的传输完成……
flutter channel- download data
完成后就可以看到已经切换到stable 分支了。
flutter channel-stable
这时候就可以把阿里云(aliyun)提供的 maven 仓库镜像再次添加上了。
添加完成后,我们就可以打开之前的flutter 项目,打开虚拟机或者连接真机,然后flutter run……
flutter run
注意!flutter SKD 和 flutter 项目不要弄混了,flutter SKD 是从 github clone 下来的,而 flutter 项目是由 flutter create 命令创建来的。
稍微等待一下……Ok,依旧完美运行。
关于命令上的提示,我就简单说明一下:
r - 重新载入代码运行
R - 重新运行(会重新编译)
o - 切换 Android / iOS 模式(真机(Android系统)不会显示这条信息,虚拟机的话会显示关于 o 的命令。但是 o 命令对真机(Android系统)依然有效)
h - 更详细的帮助信息
d - 将应用和开发环境分离,设备上可以独立使用。
q - 退出,会将设备上的应用一同退出。
OK,恭喜你!你已经完成整个对 Flutter 的版本更新和升级了。
在未来有新版本发布的时候就你依然可以使用以上步骤进行更新和升级了(已经是 stable 分支的话切换分支的步骤可以免了)。
当然,如果你在更新升级的时候碰到问题没法解决的话,可以给我留言,我会尽量帮助你解决问题。(前提是,你的操作步骤要记得,我才好复盘重现)
-
python下载大文件-golang/python 下载大文件时怎样避免oom
2020-11-01 12:19:07问题场景:高频系统中,agent 会向ATS 服务器发出刷新和预缓存的请求,这里的请求head 里面有GET ,PURGE等,因为一般的预缓存都是小文件,但是某天,突然...该文章后续仍在不断的更新修改中, 请移步到原文地址htt...问题场景:高频系统中,agent 会向ATS 服务器发出刷新和预缓存的请求,这里的请求head 里面有GET ,PURGE等,因为一般的预缓存都是小文件,但是某天,突然服务器oom。。。罪魁祸首发现是并发GET 大文件将服务器打死了。第一个版本是python 的,第二个版本是golang 实现的, 这里记录下两种语言的 下载大文件的实现方式。
该文章后续仍在不断的更新修改中, 请移步到原文地址http://dmwan.cc
第一种是python,使用的是request 库, 使用流式读取的方式,写到空设备中去。
res = self.session.request(method, url, data=body, headers=header, timeout=timeout, proxies=proxies, stream=True)
with open("/dev/null", 'wb') as f:
for chunk in res.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
f.flush()
第二种方式,对于golang ,使用io.Copy(), 将response copy 到空设备中。
func downLoadFile(url string)(len int, err error){
//err write /dev/null: bad file descriptor#
out, err := os.OpenFile("/dev/null", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
defer out.Close()
resp, err := http.Get(url)
defer resp.Body.Close()
n, err := io.Copy(out, resp.Body)
return n, err
}
使用这种方式为什么不会出现oom 的情况?因为两个原因,第一个, resp.Body 只是个reader 并没有发生真实的读取操作,第二个是io.copy 这个函数设置了缓冲区大小限制为3m,不会一次全部读取到内存中,下面是标准库的源码:
func Copy(dst Writer, src Reader) (written int64, err error) {
return copyBuffer(dst, src, nil)
}
// copyBuffer is the actual implementation of Copy and CopyBuffer.
// if buf is nil, one is allocated.
func copyBuffer(dst Writer, src Reader, buf []byte) (written int64, err error) {
// If the reader has a WriteTo method, use it to do the copy.
// Avoids an allocation and a copy.
if wt, ok := src.(WriterTo); ok {
return wt.WriteTo(dst)
}
// Similarly, if the writer has a ReadFrom method, use it to do the copy.
if rt, ok := dst.(ReaderFrom); ok {
return rt.ReadFrom(src)
}
if buf == nil {
buf = make([]byte, 32*1024) //这一步可以控制每次缓冲区迭代的大小,默认大小是3m
}
for {
nr, er := src.Read(buf)
if nr > 0 {
nw, ew := dst.Write(buf[0:nr])
if nw > 0 {
written += int64(nw)
}
if ew != nil {
err = ew
break
}
if nr != nw {
err = ErrShortWrite
break
}
}
if er != nil {
if er != EOF {
err = er
}
break
}
}
return written, err
}
-
[maven]jar包依赖错误,如何手动添加到maven仓库
2019-05-13 20:22:45添加依赖jar包时,发现无论怎样刷新始终在maven项目窗口报错,无法下载(这里红线是我解决问题后手画的),换更新的版本之后能下载,就是想用的版本无法添加依赖. 解决办法: 手动添加jar包至本地仓库. 首先进入Maven仓库:...在文章开始前,推荐另外一种值得一试的方法,即删除.idea目录,使idea重新生成.
需求描述:
通过Maven项目的pom.xml配置文件添加依赖jar包
错误描述:
添加依赖jar包时,发现无论怎样刷新始终在maven项目窗口报错,无法下载(这里红线是我解决问题后手画的),换更新的版本之后能下载,就是想用的版本无法添加依赖.
解决办法:
手动添加jar包至本地仓库.
首先进入Maven仓库:
https://mvnrepository.com/?tdsourcetag=s_pcqq_aiomsg
通过搜索栏找到自己想要的jar包
进入对应版本
点击下方圈出的地方即可下载,有的只有jar包,有的还有pom文件,全部需要下载.
接下来找到本地仓库的对应位置,首先进入本地仓库,默认地址为:用户目录/.m2/repository,一般已经在maven的setting.xml中做修改了.
我要找的solrj的< groupId>为org.apache.solr,因此就要前往:仓库目录/org/apache/solr/solr-solrj
对应版本的文件夹中会有残留的下载失败文件(last…update之类的文件名),将其清空并把下载文件放入其中.
回到Maven项目,点几下刷新,可以恢复正常下载,有时候红线不会消失,但是已经可以正常使用相关jar包了,再过一段时间回来刷新可以消除红线.
-
JavaScript和JQuery实用代码片段(一)
2020-12-11 19:24:09(一)怎样用JQuery刷新一幅图片? 说明:我们都知道,当我们在请求一个资源(比如网页,图片等)的时候,如果该资源被缓存到浏览器了,那么请求返回的就是缓存的副本,不是我们希望获取的资源(该资源内容已经被... -
Flutter学习五之网络请求和轮播图的实现
2020-08-17 01:26:16上期讲到了,怎样实现一个下拉刷新和加载更多的列表,数据更新,需要使用到网络请求,在flutter中,怎样实现一个网络请求呢 官方使用的是dart io中的HttpClient发起的请求,但HttpClient本身功能较弱,很多常用功能...上期讲到了,怎样实现一个下拉刷新和加载更多的列表,数据更新,需要使用到网络请求,在flutter中,怎样实现一个网络请求呢 官方使用的是dart io中的HttpClient发起的请求,但HttpClient本身功能较弱,很多常用功能都不支持。所以这里我们直接使用国内的开源库 dio,dio是一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时、自定义适配器等功能。
首先我们导入开源库dio,目前的最新版本是dio: ^3.0.9
, 具体用发可以参考github上的开源项目,文档还是比较详细的。这里就拿我写的一个首页轮播图的网络请求来介绍一下,首先我们定义一个全局的dio实例,可以在具体代码如下:
// 或者通过传递一个 `options`来创建dio实例 BaseOptions options = BaseOptions( baseUrl: "https://www.wanandroid.com/", connectTimeout: 10000, receiveTimeout: 5000, ) ; Dio dio=Dio(options);
通过这个实例可以拿到
get,post,pull
等方式进行网络请求,这里我们用get请求获取一个轮播图的数据,数据来源于玩Android开放api,通过get方法获取一个Response
对象,在Response对象中我们可以拿到返回值,然后就可以更新我们的UI了,这里更新UI的时候需要调用setState
方法,在setState方法中去更新UI
,代码如下:getBanner() async { ///轮播图接口请求 Response responseBanner = await dio.get("banner/json"); ///接口调用成功后更新数据需要调用setState()方法 setState(() { ///轮播图实体解析 BannerBaenEntity bannerEntity = BannerBaenEntity().fromJson(jsonDecode(responseBanner.toString())); _banners = bannerEntity.data; }); }
这里要注意的是,接口请求一般都是异步的,所以要声明此方法为
async
方法,然后用await
修饰dio.get
方法来获取response
对象。此时不需要我们手动去切换到主线程,这里和kotlin
的协程用法还是蛮像的。
这里我们还需要自定义一个轮播图控件,采用的是官方的控件PageView
,类似Android的ViewPage,但是此控件并不支持循环播放和自动切换功能,轮播图是需要支持循环播放和自动切换功能,并且手动滑动的时候要停止自动切换功能,手指拿开后再开始自动切换。1.首先来实现一下循环自动播放功能,利用Timer.periodic实现一个定时器,每隔3秒自动切换到下一张图片,同时加一个滑动动画效果,具体代码如下:
_timer = Timer.periodic(Duration(seconds: 3), (t) { _curIndex++; //执行滑动动画 _pageController.animateToPage( _curIndex, duration: Duration(milliseconds: 300), curve: Curves.linear, );
这里要注意一下,如果我们不给PageView.builder设置itemCount的情况下,pageview是长度是无限的,默认是支持无限右边滑动的,所以我们只需要在pageView滑动监听的时候,判断当前滑动位置如果是0的时候,将当前图片位置设置为轮播图数据的长度,即可实现轮播图滑动到左边的时候可以继续滑动的循环效果。同时为来避免第一次创建轮播图的时候,用户手动像左边滑动的情况,我们在创建的时候,需要指定轮播图的索引为数据的N倍。具体代码:
//轮播图初始化设置 @override void initState() { super.initState(); _curIndex = widget._banners.length * 5; //设置轮播图的初始索引位置 _pageController = PageController(initialPage: _curIndex); //初始化轮播图控制器 _initTimer(); } //构造一个pageview组件 PageView.builder( controller: _pageController, //设置pageview控制器 onPageChanged: (index) { //刷新pageview数据 setState(() { _curIndex = index; //重新设置pageview的索引位置 if (index == 0) { _curIndex = length; _changePage(); } }); })
2.我们需要监听item图片的用户手势,当用户手指按下并且滑动时,我们需要停止计时器,手指拿开时开启计时器,经过测试发现,手指按下滑动时,可以监听到,但是手机拿开时监听不到,所以这里暂时只监听手指按下时,停止计时器,并且在此启动计时器。具体代码如下:
//取消计时器 _cancelTimer() { if (_timer != null) { _timer.cancel(); _timer = null; _initTimer();//在此启动计时器,3秒后执行切换 } } GestureDetector( //手指按下并滑动时执行此方法 onPanDown: (details) { _cancelTimer(); }, //手指点击执行的方法,点击轮播图跳转页面 onTap: () { Navigator.of(context).push(MaterialPageRoute(builder: (_) { return WebViewPage(widget._banners[index%length].url); })); }, //设置轮播图item,这里就是一张网络图片加载。 child: Image.network( widget._banners[index % length].imagePath, fit: BoxFit.cover, ), )
-
TortoiseSVN和TortoiseMerge的中文帮助文档(chm格式)
2012-05-30 17:25:23从版本库里更新选定的文件到本地 B.4. Roll back (Undo) revisions in the repository B.4.1. 使用版本日志对话框 B.4.2. 使用合并对话框 B.4.3. 使用 svndumpfilter B.5. Compare two revisions of a file or ... -
SVN操作手册中文版网页格式
2017-11-08 12:10:59从版本库里更新选定的文件到本地 B.4. Roll back (Undo) revisions in the repository B.4.1. 使用版本日志对话框 B.4.2. 使用合并对话框 B.4.3. 使用 svndumpfilter B.5. Compare two revisions of a file or... -
⚠️注意:3.5.4以下版本升级时,需要更新配置文件!! __⚠️注意:3.8 以上版本已经适配了AndroidX和support库都可以使用 使用 由于Aria涉及到文件和网络的操作,因此需要你在manifest文件中添加以下权限,如果...
-
Foobar2000.AERO效果播放器
2015-03-13 14:59:54- 升级WSH MOD面板到1.1.6.1版,注意此后的版本的WSH MOD插件必须使用1.1.6或更高版本,除非特殊说明。 - 文件信息面板和控制按钮面板加入工具提示(ToolTip)特性。其中文件信息面板是提示完整行内容,按钮控制面板... -
asp.net知识库
2015-06-18 08:45:452分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ... -
webpack 持久化缓存实践
2020-12-05 02:31:10所以就涉及到一个更新部署的问题,是先部署页面,还是先部署资源? <ol><li>先部署页面,再部署资源:在二者部署的时间间隔内,如果有用户访问页面,就会在新的页面结构... -
RFC中文文档-txt
2009-09-11 14:56:56RFC496 IMP/TIP 内存更新时间表(修订版 2) RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC... -
rfc中文文档目录,包含部分翻译
2009-07-22 21:34:18RFC496 IMP/TIP 内存更新时间表(修订版 2) RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 ... -
中文版RFC,共456
2009-04-19 22:56:29RFC496 IMP/TIP 内存更新时间表(修订版 2) RFC516 丢失消息的检测 RFC591 在 NVT ASCII UCSB和在线系统之间的实验输入映象 RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC... -
测试培训教材
2014-04-01 12:10:48把测试计划树中的“Cruises”包含的所有测试用例以及“Airline Preference”、“Number of Passengers”添加到测试集中: 9、测试过程监控 计划测试的运行 在“Mercury Tours 1.0.1”中新建一个测试集: ... -
注解几乎占用了所有的空闲时间,每天都会更新,每天都有新感悟,一行行源码在不断的刷新和拓展对内核知识的认知边界. 对已经关注和fork的同学请及时同步最新的注解内容. 内核知识点体量实在太过巨大,过程会反复修正完善...
-
React & Npm 组件库维护经验
2020-12-29 20:29:42最后将所有更新、或者被依赖的组件统一升级版本号加入发布队列。 完整代码仓库:https://github.com/fex-team/fit/blob/master/scripts/module-manage/utils/version.js</p> <h3>inline Or ClassName? <p>... -
整理后java开发全套达内学习笔记(含练习)
2011-06-06 14:29:30abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'... \uxxxx 1到4位16进制数指定Unicode字符输出(xxxx) \\ \ \' ' \" ... -
Oracle Database 11g数据库管理艺术--详细书签版
2012-09-30 01:09:45书中内容主要集中在大多数企业常见的问题之上,如安装和升级到oracle database 11g数据库软件、创建数据库、导出和导入数据、数据库的备份与恢复、性能调优,等等。 本书还提供了dba完成本职工作必备的基本的uniix... -
多媒体教室
2013-06-14 08:10:31此模式下,屏幕广播的内容为1:1显示,窗口显示的内容能根据屏幕广播或录制时教师的鼠标移动情况而做相应滚动,这样就不会出现在自由滚动模式下有时会看不到教师的操作以及在缩放显示模式下看不清楚屏幕广播具体... -
电脑高手必备 Windows系统35招实用技巧
2009-06-11 14:42:10个文件在Windows各个版本的安装光盘中或是硬盘上的Windows/command/里都 有,只有几十KB,把这个文件复制到软盘下,启动系统后直接运行这个程序( 可以不加参数,该程序会自动根据内存大小分配适当的内存空间作为... -
C#编程经验技巧宝典
2008-06-01 08:59:334 <br>0008 为程序设置版本和帮助信息 4 <br>0009 设置Windows应用程序启动窗体 5 <br>0010 设置Web应用程序起始页 5 <br>0011 如何设置程序的出错窗口 5 <br>0012 如何进行程序调试 6 ... -
Oracle事例
2007-08-26 10:35:53手工刷新快照,(调用DBMS_SNAPSHOT包中的refresh过程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type); begin DBMS_SNAPSHOT.REFRESH(\'snap_to_html\',\'c\'); end; 对所有快照进行刷新 begin DBMS_...
-
MPC第1期.rar
-
用Go语言来写区块链(一)
-
SnapGene 3.2.1 Win安装.rar
-
Trie字符串统计(Trie)
-
零基础一小时极简以太坊智能合约开发环境搭建并开发部署
-
2016 年中级通信工程师考试综合能力真题.pdf
-
自动化测试Python3+Selenium3+Unittest
-
vue3从0到1-超详细
-
想月薪过万?这些面试准备你做好了吗?
-
Mycat 实现 MySQL的分库分表、读写分离、主从切换
-
超简单挖矿CryptoTab Browser
-
包头鱼与鲇鱼数据集.txt
-
【爱码农】C#制作MDI文本编辑器
-
机器学习可视化软件机器学习可视化软件
-
Django TypeError: argument of type ‘PosixPath‘ is not iterable
-
Androidesk-release-androidesk.zip
-
vagrant_2.2.5的64位版本
-
基于Qt的LibVLC开发教程
-
C++ STL(十四):常用排序算法(sort、random_shuffle、merge、reverse)
-
大数据开发之Hadoop学习6--HDFS的Shell操作