Flutter 类似viewDidAppear 的任务处理】的更多相关文章

前言 在任务之中 ,有些实时任务比较重的需求,需要在类似 iOS viewDidAppear 里面执行数据请求任务,如:上一个页面返回pop 后执行网络请求任务.在flutter中如何实现呢?  目前 flutter生命周期 里面只有 initState ,没有类似iOS 编程模式的那样生命周期: 因此我们只能退而求其次的完成任务. 实现 在Navigator....then 后面执行任务,then 是 上一个页面执行pop 后才触发 代码如下: Navigator.of(context).pu…
注:本人是翻译过来,并且加上本人的一点见解. 前言 想要揭示出表面之下深层次的一些可利用的方面.这些底层的 API 提供了大量的灵活性,随之而来的是大量的复杂度和更多的责任.在我们的文章常见的后台实践中提到的高层的 API 和模式能够让你专注于手头的任务并且免于大量的问题.通常来说,高层的 API 会提供更好的性能,除非你能承受起使用底层 API 带来的纠结于调试代码的时间和努力. 尽管如此,了解深层次下的软件堆栈工作原理还是有很有帮助的.我们希望这篇文章能够让你更好的了解这个平台,同时,让你更…
对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached.File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器. 但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能. 所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache.而这种需求目前还没有看…
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{         code to be executed after a specified delay     }); 这里也存在一些缺点.不能直接取消我们已经提交到dispatch_after的代码,它将会运行.另外一个需要注意的事情就是,在人们使用dis…
本文由webfrogs译自objc.io,原文作者Daniel Eggert.转载请注明出处! 小引 本篇英文原文所发布的站点objc.io是一个专门为iOS和OS X开发者提供的深入讨论技术的平台,文章含金量很高.这个平台每月发布一次,每次都会有数篇文章针对同一个特殊的主题的不同方面来深入讨论.本月的主题是“并发编程”,本文翻译的正是其中的第4篇文章. 翻译此文是受到了破船的启发.他已经将objc.io本月主题的第二篇文章翻译完成了.<OC中并发编程的相关API和面临的挑战(1)> <…
MySQL到Redis数据复制方案 无论MySQL还是Redis,自身都带有数据同步的机制,像比较常用的 MySQL的Master/Slave模式 ,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略. 那么理论上我们也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis.但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于 binlog存在Statement/Row…
本文由webfrogs译自objc.io,原文作者Daniel Eggert.转载请注明出处! 小引 本篇英文原文所发布的站点objc.io是一个专门为iOS和OS X开发者提供的深入讨论技术的平台,文章含金量很高.这个平台每月发布一次,每次都会有数篇文章针对同一个特殊的主题的不同方面来深入讨论.本月的主题是“并发编程”,本文翻译的正是其中的第4篇文章. 翻译此文是受到了破船的启发.他已经将objc.io本月主题的第二篇文章翻译完成了. <OC中并发编程的相关API和面临的挑战(1)> <…
本文由webfrogs译自objc.io,原文作者Daniel Eggert.   小引 本篇英文原文所发布的站点objc.io是一个专门为iOS和OS X开发者提供的深入讨论技术的平台,文章含金量很高.这个平台每月发布一次,每次都会有数篇文章针对同一个特殊的主题的不同方面来深入讨论.本月的主题是“并发编程”,本文翻译的正是其中的第4篇文章.   翻译此文是受到了破船的启发.他已经将objc.io本月主题的第二篇文章翻译完成了.   <OC中并发编程的相关API和面临的挑战(1)>  <…
本文由webfrogs译自objc.io,原文作者Daniel Eggert.   小引 本篇英文原文所发布的站点objc.io是一个专门为iOS和OS X开发者提供的深入讨论技术的平台,文章含金量很高.这个平台每月发布一次,每次都会有数篇文章针对同一个特殊的主题的不同方面来深入讨论.本月的主题是“并发编程”,本文翻译的正是其中的第4篇文章.   翻译此文是受到了破船的启发.他已经将objc.io本月主题的第二篇文章翻译完成了.   <OC中并发编程的相关API和面临的挑战(1)>  <…
Flutter AppBar自定义顶部导航按钮图标.颜色以及TabBar定义顶部Tab切换. leading:在标题前面显示的一个控件,在首页通常显示应用的logo:在其他界面通常显示为付汇按钮. title:标题,通常显示为当前界面的标题文字,可以放组件 actions:通常使用IconButton来表示,可以放按钮组 bottom:通常放tabBar,标题下面显示一个Tab导航栏 backgroundColor:导航背景颜色 iconTheme:图标样式 textTheme:文字样式 cen…
描述 先上效果图 在项目中,有 @ 和 话题功能,需要在编辑时即可回显,但是官方原生的TextField不支持对部分文字定义不同的样式,所以封装了一个. 注意:这不是富文本插件,不支持在输入框中显示图片,仅是 TextField 的扩展,让其支持自定义 TextSpan. 本文介绍封装思路,如果想要直接在项目中应用,可以直接通过以下方式引入: text_span_field: 1.0.0 使用方式为: TextSpanField( controller: TextEditingControlle…
准备阶段 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: git clone -b beta https://github.com/flutter/flutter.git 配置 Flutter 环境 我是 Mac 系统,Flutter SDK 下载完后的路径:Users/wuxiaolong/Flutter/flutter/ . 在命令行下,进入用户目录 cd $HOME 打开.bash_profile文件 执行命令打开文件: open -e .bas…
flutter初体验 和flutter斗争了两个周末,基本弄清楚了这个玩意的布局和一些常用组件了. 在flutter里面,所有东西都是组件Widget.我们像拼接积木一样拼接Widget,拼接的关键词是child或者children.以我几乎为0的web布局经验,往往在使用widget的时候,头脑里面映射的都是div,table等语义话标签. StatefulWidget和StatelessWidget Widget大类上分为两个,StatefulWidget和StatelessWidget.这…
一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和用户体验.但这两种方式也带来了新的问题. 比如使用 WebView 跨平台方式,优点确实非常明显.基于 WebView 的框架集成了当下 Web 开发的诸多优势:丰富的控件库.动态化.良好的技术社区.测试自动化等等.但是缺点也同样明显:渲染效率和 JavaScript 的执行能力都比较差,使页面的加…
前言 工欲善其事,必先利其器 所以第一篇我们来说说 Flutter 环境的搭建. 笔者这边使用的是 MAC 电脑,因此以 MAC 电脑的环境搭建为例. Windows 或者 Linux 也是类似的操作. Flutter 有英文版的官网和中文网,大家可以根据自己的喜好和情况进行选择. 点击下面的链接可以到对应的安装页面. Flutter 官网安装链接 Flutter 中文网安装链接 我们这边以官网为例进行说明. 目录 1. 配置镜像 点击进入官网,可以看到下图: 我们点击 Using Flutte…
前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flutter. 官方 WIKI 有说明,但是里面坑还是不少的,变化也是存在的. 因此就让我们来看一看. 目录 1. 按照官网实现基本引入 Add Flutter to existing apps 上面为GitHub WIKI 的引入方式,通过 Module 的形式进行引入. 可以看出文档还是在不断更新的…
Flutter本地存储 和Android.Ios类似,Flutter也支持Preferences(Shared Preferences and NSUserDefaults) .文件.和Sqlite3. 只不过要想使用这个功能需要引入官方仓库的相应插件,那么我们就分别来看下这三种存储方式的使用方法. Preferences存储 Flutter中本身并不支持Preferences存储,需要借助于第三发的组件来实现. 插件搜索地址: https://pub.flutter-io.cn/package…
Android 的前生今世 Android 系统 Android系统作为全球第一大系统,基于 Java 开发的移动端有着诸多的性能优势. 2018年前 H5 的性能瓶颈和 RN 的停更 导致业界对跨平台开发失去信心. 直到2018年10月Google推出首个 Flutter 跨平台解决方案,打破整个移动开发的方向. 为什么 Flutter 成为 Android 方向标 跨平台性:Flutter基于图像绘制引擎进行渲染,在不同平台下绘制效果是绝对一致的,能做到真正的跨平台,一处写处处运行 性能优异…
背景 在端上为了提升App的灵活性, 快速解决万变的业务需求,开发者们探索了多种解决方案,如PhoneGap ,React Native ,Weex等,但在Flutter生态还没有好的解决方案.未来闲鱼都会基于Flutter 来跨端开发,如果突破发版周期,在不发版的情况下,完成业务需求,同时能兼容性能体验,无疑是更快的响应了业务需求.因此我们需要探索在Flutter生态下的动态化. 方案选择 借鉴Android 和Ios上的动态性方案,我们也思考了多种Flutter动态性方案. 1.下载替换Fl…
引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式以及在此基础之上拓展的双端嵌入Native组件的解决方案. 1. 使用教程 1.1. DemoRun 嵌入地图这一场景可能在很多App中都会存在,但是现在的地图SDK都没有提供Flutter的库,而自己开发一套地图显然不太现实.这种场景下,使用混合栈的形式是一个比较好的选择.我们可以直接在Nativ…
对于大部分安卓或者IOS开发人员来说,App的数据持久化可能是很平常的一个话题.但是对于Web开发人员来说,可能紧紧意味着localStorage和sessionStorage. Web开发 localStorage和sessionStorage localStorage和sessionStorage是相似而又不同的,二者的API接口是极其类似甚至相同.简单地说一下二者的异同点: localStorage生命周期是永久.这意味着在理论上除非用户显示在浏览器提供的UI上清除localStorage…
作为忠实与较资深的Android汪, 最近抽出了一些时间研究了一下Google的亲儿子Flutter, 尚属皮毛, 只能算是个简单的记录吧. Google自2017年第一次提出Flutter, 到2018年Beta, 再加之RN的各种风波与问题, 使得Flutter的热度不断上升, 国内不少公司都公布Flutter在其产品中的应用, 如美团, 闲鱼等. 前言 Flutter作为跨平台框架, 常常被人拿出来与React Native, 以及Xamarin进行对比, 除了大家都是跨平台框架之外且能达…
Flutter for iOS 开发者 本文档适用那些希望将现有 iOS 经验应用于 Flutter 的开发者.如果你拥有 iOS 开发基础,那么你可以使用这篇文档开始学习 Flutter 的开发. 开发 Flutter 时,你的 iOS 经验和技能将会大有裨益,因为 Flutter 依赖于移动操作系统的众多功能和配置.Flutter 是用于为移动设备构建用户界面的全新方式,但它也有一个插件系统用于和 iOS(及 Android)进行非 UI 任务的通信.如果你是 iOS 开发专家,则你不必将…
Simulation 可以理解成动画进行的函数. Flutter中自带了有下面几种. BouncingScrollSimulationBounce弹性的滚动模拟 ClampedSimulation ClampingScrollSimulation* FrictionSimulation摩擦参数的的滚动模拟 GravitySimulation类似重力的模, SpringSimulation弹簧弹力的模拟.…
前言: 最近在自学flutter跨平台开发,从学习的过程来看真心感觉不是那么一件特别容易的事.不但要了解语法规则, 还要知晓常用控件,和一些扩展性的外延知识,所以套一句古人的话“路漫漫其修远矣,无将上下而求索”. 关于Material Design 以下是摘录的一篇非常好的关于“Material Design”的文章,传送门 1.安卓是什么? 想象一下,过年同学聚会上,大家把手机都放在饭桌前,除了各种型号的 iPhone 之外,你还能看到什么品牌的手机呢?我猜一定会有 OPPO.VIVO.魅族.…
一,前言: MaterialApp和Scaffold是Flutter提供的两个Widget,其中: MaterialApp是一个方便的Widget,它封装了应用程序实现Material Design所需要的一些Widget. Scaffold组件是Material Design布局结构的基本实现.此类提供了用于显示drawer.snackbar和底部sheet的API.MaterialApp 的 child 是 Scaffold Widget. 二,MaterialApp属性介绍 * 22个参数…
1.Expanded组件 占满可用空间 -----可以到达类似flex布局中  第一列占用大量空间,所以它必须包装在Expanded widget中. 写死的高度改成Expanded自动撑满屏幕如果还是不能撑满试试加上flex:1的属性 Expanded expands its child to fill the available space --Using an Expanded widget makes a child of a Row, Column, or Flex expand to…
学习了Flutter,来分享一下学习的一些常用的知识,先来说说ListView 案例效果: ListView是一个类似列的widget,它的内容对于其渲染框太长时会自动提供滚动. ListView 摘要:用于组织盒子中列表的特殊Column可以水平或垂直放置检测它的内容超过显示框时提供滚动比Column配置少,但更易于使用并支持滚动 构建ListView有四个选项: 默认构造函数采用子类的显式List <Widget>.此构造函数适用于具有少量子项的列表视图,因为构造List需要为可能在列表视…
跨平台一直是老生常谈的话题,cordova.ionic.react-native.weex.kotlin-native.flutter等跨平台框架百花齐放,颇有一股推倒原生开发者的势头. 为什么我们需要跨平台开发? 本质上,跨平台开发是为了增加代码复用,减少开发者对多个平台适配的工作量,降低开发成本,提高业务专注的同时,提供比web更好的体验. 目前移动端跨平台开发中,备受关注的方案大致归纳为以下几种情况: 1)react native.weex均使用JavaScript作为编程语言,目前Jav…
1.命令行运行flutter run之后iOS报错:Could not install build/ios/iphones/Runner.app on XXXXX. try lunching Xcode andselecting "Project > Run" to fix the problem open ios/Runner.xworkspace....... 这个恶心的报错,我一直以为是我Xcode的问题,因为早上一直好的,代码未动.而下午什么都没做,就是Xcode升级了下…