前言 为了避免用户误触返回按钮而导致APP退出,在很多APP中都拦截了用户点击返回键的按钮,然后进行一些防误触判断,比如当用户在某一个时间段内点击两次时,才会认为用户是要退出(而非误触).Flutter中可以通过WillPopScope来实现返回按钮拦截. 接口描述 const WillPopScope({ Key key, @required this.child, // onWillPop是一个回调函数,当用户点击返回按钮时被调用(包括导航返回按钮及Android物理返回按钮). // 该回…
如需转载,请注明出处:Flutter学习笔记(26)--返回拦截WillPopScope,实现1秒内点击两次返回按钮退出程序 在实际开发中,为了防止用户误触返回按钮导致程序退出,通常会设置为在1秒内连续点击两次才会退出应用程序.Android中一般的处理方式是在onKeyDown方法内做计时处理,当keyCode == KeyEvent.KEYCODE_BACK 且 两次点击返回按钮间隔时间小于1秒则退出应用程序,在Flutter中可以通过WillPopScope来实现拦截返回按钮,并且在其内部…
上篇我们说到过在react-native触摸及手势事件 那么我在项目中遇到的问题是在react-navigation中的子页面,希望保留在ios中的效果:从左侧往右侧滑动为退出该页面. 但是希望我在滑动页面的某一部分(视频区域)的时候,不要做出退出页面的操作,页面如下 在手势操作上面红色部分的时候,取消导航的手势返回,在拖动下方区域的时候,启用导航的手势返回 其实在react-navigation组件中,返回的返回手势是要求成为响应者的,我们不能修改react-navigation的默认机制.…
效果: /**  * Flutter  BottomNavigationBar 自定义底部导航条.以及实现页面切换:  * BottomNavigationBar是底部导航条,可以让我们定义底部Tab切换,  * bottomNavigationBar是Scaffold组件的参数.  *BottomNavigationBar常见的属性:  items  List<BottomNavigationBaritem> 底部导航条按钮集合.  iconSize icon  currentIndex 默…
.net ppt转pdf时报以下错误: 对COM 组件的调用返回了错误 HRESULT E_FAIL 在服务器端打开PPT,选项--另存为--PDF,发现PowerPoint报了个错误: “无法找到打印机 Microsoft XPS Document Writer”. 再打开Word,另存为PDF,没有此类错误. 解决方案: 马上打开Print Spooler服务...…
<?xml version="1.0" encoding="utf-8"?> <!--arrowKeysWrapFocus 如果为 true,则使用箭头键在组件内导航时,如果击中某一端则将折回.--> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"…
首先在于父子组件传值的方法很多,本人在这里只是简单描述一下一个组件里面引用了子组件,那么子组件如何才能获取父组件中后台返回的值呢? 首先调用组件相信大家都应该明白了(不明白的自己撸撸文档), <info-head :orderInfo="orderInfo" :changePrice="changePrice"></info-head> 上面的是父组件中引用的子组件,其中orderInfo为父组件中定义的接收后台返回的值需要向平常一样的去定义…
1.http 请求拦截器 axios.interceptors.request.use(function(config){ //在发送请求之前做些什么 return config }), function(error){ //请求错误做些什么 return Promise.reject(error); } //或者: axios.insterceptors.request.use(config=>{ //在发送请求之前做些什么 return config }), error=> { //请求错…
1:Winform应用通过mshtml操作IE浏览器DOM时,第一次运行正常,点击第二次时错误信息如下 A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in openie01.exe Additional information: 对 COM 组件的调用返回了错误 HRESULT E_FAIL. If there is a handler for this except…
.nav--指定列表元素为导航组件. .nav-tabs--指定导航组件的样式为标签页: .nav-pills--指定导航组件的样式为胶囊式标签页: .nav-stacked--指定标签页的样式为垂直堆叠排列: .nav-justified--指定标签页的样式为两端对齐: .disabled--设置导航栏组件的菜单项为禁用样式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo…
Flutter 父子组件传值 一父传子: 父中: void onButtonChange(val1,val2,val3){ print('============================子向父传值OK了==============='); print(val1); print(val2); print(val3); print('============================子向父传值OK了===============');} List list=[["A",&qu…
在开始之前,我们先写一个最简单的入口文件:     后面,都是在这个结构的基础上面完成的. 由于Container组件和Text组件都是写在body里面的,所以下面,先将body抽离成一个组件的形式. Container组件 在flutter里面Container组件是一个容器组件,类似于html中的div一样. 在Center组件里面添加Container组件,然后再添加Text组件,和上面的效果是一样的. Container.Text这些自定义组件的本质都是类,有很多可选的命名参数,在Con…
SQL server 2008,导出了两个sql文件. 打开第一个文件,没有问题,建好相应的数据库,运行脚本,即可导入. 第二个文件却遇到问题,始终报错“对COM组件的调用返回了错误HRESULT E_FAIL” 搜索引擎给的解决方案是启动和配置DTC服务,确保“Distributed Transaction Coordinator”服务是开启的且允许操作权限,大费周章的一顿操作之后还是不解决问题.最后从对比两个文件发现,第一个文件大小只有1M,第二个却有3G,怀疑是微软对文件大小做了限制,后续…
Flutter Inkwell使用详解 该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://github.com/xj124456/flutter_widget_demo, 欢迎Star 使用场景 当需要给一个元素点击事件的时候,你可以用InkWell来包裹这个元素,它里面有常用交互事件和点击效果,可以简单实现想要的效果 预览 组件参数说明 const InkWell({ Key key, W…
该文章属于[Flutter每周一组件]系列,其它组件可以查看该系列下的文章,该系列会不间断更新:所有组件的demo已经上传值Github: https://github.com/xj124456/flutter_widget_demo 欢迎Star 博客:思否, 掘金, 知乎, 简书, 慕课, CSDN, 博客园, DX前端 公众号:DX前端框架知识库 联系我:公众号菜单点击联系我 使用场景 组件解释:固定高度的单个行,通常包含一些文本以及前导或尾随图标. 当需要给一个列表list的时候,你可以…
AppBar组件的常用属性如下: 属性 描述 leading 在标题前面显示的一个控件,在首页通常显示应用的 logo:在其他界面通常显示为返回按钮 title 标题,通常显示为当前界面的标题文字,可以放组件 actions 通常使用 IconButton 来表示,可以放按钮组 bottom 通常放 tabBar,标题下面显示一个 Tab 导航栏 backgroundColor 导航背景颜色 iconTheme 图标样式 textTheme 文字样式 centerTitle 标题是否居中显示 i…
前言 对话框本质上也是UI布局,通常一个对话框会包含标题.内容,以及一些操作按钮,为此,Material库中提供了一些现成的对话框组件来用于快速的构建出一个完整的对话框. 接口描述 // 1. AlertDialog const AlertDialog({ Key key, // 对话框组件标题 this.title, // 标题填充 this.titlePadding, // 标题文本样式 this.titleTextStyle, // 对话框内容组件 this.content, // 内容的…
前言 很多时候会依赖一些异步数据来动态更新UI,比如在打开一个页面时我们需要先从互联网上获取数据,在获取数据的过程中我们显示一个加载框,等获取到数据时我们再渲染页面:又比如想展示Stream(比如文件流.互联网数据接收流)的进度.当然,通过StatefulWidget完全可以实现上述这些功能.但由于在实际开发中依赖异步数据更新UI的这种场景非常常见,因此Flutter专门提供了FutureBuilder和StreamBuilder两个组件来快速实现这种功能. 接口描述 FutureBuilder…
前言 Color类中颜色以一个int值保存,显示器颜色是由红.绿.蓝三基色组成,每种颜色占8比特,存储结构如下: Bit(位) 颜色 0-7 蓝色 8-15 绿色 16-23 红色 24-31 Alpha(不透明度) Theme组件可以为Material APP定义主题数据(ThemeData).Material组件库里很多组件都使用了主题数据,如导航栏颜色.标题字体.Icon样式等.Theme内会使用InheritedWidget来为其子树共享样式数据. 接口描述 factory ThemeD…
前言   在Flutter开发中,状态管理是一个永恒的话题.   一般的原则是:如果状态是组件私有的,则应该由组件自己管理:如果状态要跨组件共享,则该状态应该由各个组件共同的父元素来管理.   对于组件私有的状态管理很好理解,但对于跨组件共享的状态,管理的方式就比较多了,如使用全局事件总线EventBus,它是一个观察者模式的实现,通过它就可以实现跨组件状态同步:状态持有方(发布者)负责更新.发布状态,状态使用方(观察者)监听状态改变事件来执行一些操作.   但是观察者模式来实现跨组件状态共享有…
前言   InheritedWidget提供了一种数据在widget树中从上到下传递.共享的方式,例如在应用的根widget中通过InheritedWidget共享了一个数据,那么便可以在子widget中来获取该共享的数据.InheritedWidget在widget树中数据传递方向是从上到下的,这和Notification的传递方向是相反的. 接口描述 代码示例 // 数据共享(InheritedWidget) // InheritedWidget提供了一种数据在widget树中从上到下传递.…
BottomNavigationBar常用的属性: 属性名 说明 items List<BottomNavigationBarItem> 底部导航条按钮集合 iconSize icon currentIndex 默认选中第几个 onTap 选中变化回调函数 fixedColor 选中的颜色 type BottomNavigationBarType.fixed BottomNavigationBarType.shifting import 'package:flutter/material.da…
之前写过关于全局配置http拦截器的随笔,现在有个需求,在微信支付时,生成二维码,页面显示一个遮罩层,二维码页面需要每两秒请求一次接口,若返回结果为已支付,则进行页面跳转,但因为全局http中loading的存在,每两秒遮罩会闪动一次,所以此处需要配置不显示loading. 解决思路是: 1.全局声明了一个变量isShowLoading: true: 2.全局的http.js引入声明全局变量的js文件,并在http拦截器中判断isShowLoading是否为true,如果是,则加载loading…
Flutter AppBar 自定义顶部按钮图 标.颜色 属性 描述 leading 在标题前面显示的一个控件,在首页通常显示应用 的 logo;在其他界面通常显示为返回按钮 title 标题,通常显示为当前界面的标题文字,可以放组 件 actions 通常使用 IconButton 来表示,可以放按钮组 bottom 通常放 tabBar,标题下面显示一个 Tab 导航栏 backgroundColor 导航背景颜色 iconTheme 图标样式 textTheme 文字样式 centerTi…
BottomNavigationBar 是底部导航条,可以让我们定义底部 Tab 切换,bottomNavigationBar是 Scaffold 组件的参数. BottomNavigationBar 常见的属性 属性名 说明 items List<BottomNavigationBarItem> 底 部 导 航 条按钮集合 iconSize icon currentIndex 默认选中第几个 onTap 选中变化回调函数 fixedColor 选中的颜色 type BottomNavigat…
在APP中一些页面为了防止用户操作失误点击到返回键导致退出APP,可以设置其一定时间内点击两次返回键才允许退出APP,完成这个功能可以通过WillPopScope和SystemNavigator.pop实现 我们先来看一下效果: 要实现这个效果我们需要先在外层包裹WillPopScope用来监听用户点击返回键 Widget build(BuildContext context) { return WillPopScope( child: Scaffold( body: Center( child…
main.dart import 'package:flutter/material.dart'; void main(){ return runApp(MyApp()); } class ProductInfo{ final String title; final String description; ProductInfo(this.title,this.description); } class MyApp extends StatelessWidget { @override Widg…
前言 Material组件库中提供了输入框组件TextField和表单组件Form. 输入框TextField 接口描述 const TextField({ Key key, // 编辑框的控制器,通过它可以设置/获取编辑框的内容.选择编辑内容.监听编辑文本改变事件.大多数情况下我们都需要显式提供一个controller来与文本框交互.如果没有提供controller,则TextField内部会自动创建一个. this.controller, // 用于控制TextField是否占有当前键盘的输…
概念 在Flutter中几乎所有的对象都是一个Widget.与原生开发中"控件"不同的是,Flutter中的Widget的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的组件如:用于手势检测的 GestureDetector widget.用于APP主题数据传递的Theme等等,而原生开发中的控件通常只是指UI元素. Widget与Element 在Flutter中,Widget的功能是"描述一个UI元素的配置数据",它就是说,Widget其实并不是表示最…
拦截器应该可以说是一个很经典的设计模式,它有点类似于过滤器,当某信息从一个地方流向目的地的过程中,可能需要统一对信息进行处理,如果考虑到系统的可扩展性和灵活性通常就会使用拦截器模式,它就像一个个关卡被设置在信息流动的通道中,并且可以按照实际需要添加和减少关卡.Tribes为了在应用层提供对源消息统一处理的渠道引入通道拦截器,用户在应用层只需要根据自己需要添加拦截器即可,例如,压缩解压拦截器.消息输出输入统计拦截器.异步消息发送器等等. 拦截器的数据流向示意图可以参考前面的tribes简介章节,数…