摘要:概述: 表示一个时间点 通过构造函数或解析格式化的字符串创建DateTime对象,并且符合ISO 8601标准的子集,小时是24小时制,范围在0-23之间 DateTime对象创建之后,将是固定不变的, 不可被修改 DateTime对象默认使用的是本地时区,除非显示地指定UTC时区 一,方法详解 命
阅读全文
摘要:一,画路径 - drawPath(Path path, Paint paint) Path 主要有方法如下: 直接描述路径的方法还可以细分为两组:添加子图形和画线(直线或曲线) addXXX() - 添加子图形(由于此类方法参数与上面介绍的画简单图形一样,就不多赘述了) addXXX() - 添加子
阅读全文
摘要:一,概述 画布(Canvas) 画布是一个矩形区域,我们可以控制其每一像素来绘制我们想要的内容 Canvas 拥有多种绘制点、线、路径、矩形、圆形、以及添加图像等的方法,结合这些方法我们可以绘制出千变万化的画面。 Canvas中有多个与绘制相关的方法,如drawLine()、drawRect()、d
阅读全文
摘要:一,概述 Flutter动画库的核心类是Animation对象,它生成指导动画的值,Animation对象指导动画的当前状态(例如,是开始、停止还是向前或者向后移动),但它不知道屏幕上显示的内容。动画类型分为两类: 补简动画(Tween),定义了开始点和结束点、时间线以及定义转换时间和速度的曲线。然
阅读全文
摘要:1. 介绍 本文会从代码层面去介绍Flutter动画,因此不会涉及到Flutter动画的具体使用。 1.1 Animation库 Flutter的animation库只依赖两个库,Dart库以及physics库。animation是采用Dart编写的,所以依赖Dart库是很正常的。 physics库
阅读全文
摘要:一,动画介绍 动画对于App来说,非常的重要。很多App,正是因为有了动画,所以才会觉得炫酷。移动端的动画库有非常的多,例如iOS上的Pop、web端的animate.css、Android端的AndroidViewAnimations、跨平台的Lottie等。正是因为有了这些封装好的动画库,我们制
阅读全文
摘要:一,概述 问题场景一 当从网上去下载一些之前的完整的项目的时候,用终端也 pod update了,但一运行,熟悉的linker错误就出来了。 解决办法 在Other Linker Flags(也即 OTHER_LDFLAGS)中添加$(inherited)。 在Header/Framework Se
阅读全文
摘要:一,概述 业务开发中经常会碰到这样的情况,多个Widget需要同步同一份全局数据,比如点赞数、评论数、夜间模式等等。在安卓中,一般的实现方式是观察者模式,需要开发者自行实现并维护观察者的列表。在flutter中,原生提供了用于Widget间共享数据的InheritedWidget,当Inherite
阅读全文
摘要:一,概述 PageView 是一个滑动视图列表,它也是继承至 CustomScrollView 的。 二,构造函数 类命构造函数(PageView) PageView 使用场景:创建一个可滚动列表 构造函数 PageView({ Key key, this.scrollDirection = Axi
阅读全文
摘要:一,概述 Flutter 的生命周期分为两个部分: Widget 的生命周期 App 的生命周期 二,Widget 的生命周期 Flutter 里的 Widget 分为 StatelessWidget 和 StatefulWidget 两种,这两种 Widget 的生命周期是不一样的,我们接下来具体
阅读全文
摘要:一,概述 flutter一个重要的特性就是组件化。组件分为两种状态,一种是StatefulWidget有状态组件,一种是StatelessWidget无状态组件。 无状态组件不能更新状态,有状态组件具有类似刷新的机制,可更改状态。 功能模块都可以通过继承两种状态组件实现功能模块封装。组件间通信,一般
阅读全文
摘要:一,前言 在开发 Flutter 的过程中你可能会发现,一些小部件的构造函数中都有一个可选的参数——Key。在这篇文章中我们会深入浅出的介绍什么是 Key,以及应该使用 key 的具体场景。 二,什么是Key 在 Flutter 中我们经常与状态打交道。我们知道 Widget 可以有 Statefu
阅读全文
摘要:一,什么是运算符重载(operator overloading) 在软件开发过程中,运算符重载(英语:operator overloading)是多态的一种。运算符重载通常只是一种语法糖,这种语法对语言的功能没有影响,但是更方便程序员使用。让程序更加简洁,有更高的可读性。 二,语法糖的现实意义 在日
阅读全文
摘要:一,概述 基本有两种类型: 条形进度条(LinearProgressIndicator) new LinearProgressIndicator( backgroundColor: Colors.blue, // value: 0.2, valueColor: new AlwaysStoppedAn
阅读全文
摘要:一,概述 RefreshIndicator是Flutter基于Material设计语言内置的控件,集合了下拉手势、加载指示器和刷新操作一体,可玩性比FutureBuilder差了一大截,不过大家也用过Material设计语言的其他控件,视觉效果也不赖的。 要实现拉刷新列表的功能仅仅依靠Refresh
阅读全文
摘要:概述 现在很难想象移动应用程序不需要与后台交互或者存储结构化数据。现在开发,数据传输方式基本都是用JSON,在Flutter中是没有GSON/Jackson/Moshi这些库,因为这些库需要运行时反射,在Flutter是禁用的。运行时反射会干扰Dart的_tree shaking_。使用_tree
阅读全文
摘要:Flutter的请求网络有多种方式,一种是使用dart io中的HttpClient发起的请求,一种是使用dio库,另一种是使用http库,先学一下get和post,put、delete就等后面用到在学。下面就实践: 1.dart io发起的请求 1.1.get请求 import 'dart:io'
阅读全文
摘要:一,概述 在Dart1.9中加入了async和await关键字,有了这两个关键字,我们可以更简洁的编写异步代码,而不需要调用Future相关的API。他们允许你像写同步代码一样写异步代码和不需要使用Future接口。相当于都Future相关API接口的另一种封装,提供了一种更加简便的操作Future
阅读全文
摘要:一,概述 编程中的代码执行,通常分为同步与异步两种。 同步:简单说,同步就是按照代码的编写顺序,从上到下依次执行,这也是最简单的我们最常接触的一种形式。但是同步代码的缺点也显而易见,如果其中某一行或几行代码非常耗时,那么就会阻塞,使得后面的代码不能被立刻执行。 异步:异步的出现正是为了解决这种问题,
阅读全文
摘要:一,概述 通常来讲,Map是一个键值对相关的对象,键和值可以是任何类型的对象。每个键只出现一次,而一个值则可以出现多次。映射是动态集合。 换句话说,Maps可以在运行时增长和缩小。 dart:core库中的Map类提供了相同的支持。 二,声明 不指定泛型(普通方式,不指定任何类型,这时testMap
阅读全文
摘要:一,概述 Notification是Flutter中一个重要的机制,在Widget树中,每一个节点都可以分发通知,通知会沿着当前节点(context)向上传递,所有父节点都可以通过NotificationListener来监听通知,Flutter中称这种通知由子向父的传递为“通知冒泡”(Notifi
阅读全文
摘要:一,概述 ScrollController可以用来控制可滚动widget的滚动位置 二,ScrollController 构造函数 ScrollController({ double initialScrollOffset = 0.0, //初始滚动位置 this.keepScrollOffset
阅读全文
摘要:一,概述 SingleChildScrollView类似于Android中的ScrollView,它只能接收一个子Widget。定义如下: 二,构造函数 const SingleChildScrollView({ Key key, this.scrollDirection = Axis.vertic
阅读全文
摘要:一,概述 ScrollView 是一个带有滚动的视图组件。 二,组成部分 ScrollView 由三部分组成: Scrollable - 它监听各种用户手势并实现滚动的交互设计。可滚动Widget都直接或间接包含一个Scrollable widget,因此它们包括一些共同的属性,我们在此统一介绍一下
阅读全文
摘要:一,flutter SliverAppbar 控件介绍 SliverAppBar “应用栏” 相当于升级版的 appbar 于 AppBar 位置的固定的应用最上面的; 而 SliverAppBar 是可以跟随内容滚动的; 使用方法 与CustomScrollView、NestedScrollVie
阅读全文