Flutter 技术入门与实战 (25):开启 Flutter 之旅 3.2

阅读数:4 2019 年 12 月 15 日 18:48

Flutter技术入门与实战(25):开启Flutter之旅 3.2

(变量与基本数据类型)

内容简介
第 1 章介绍 Flutter 的基本概念,并搭建第 yi 个 Flutter 程序,来感受一下 Flutter 之美。
第 2 章介绍几个重要知识点,如入口程序、Material Design、Flutter 主题、无状态组件和有状态组件、使用包资源、Http 请求。
第 3 章简单介绍 Dart 语言。Dart 语言是 Flutter SDK 指定的语言,我们很有必要补充一下它的基础知识,包括语法特性、基本语句、面向对象等。
第 4 章介绍常用组件。Flutter 里有一个非常重要的核心理念:一切皆为组件,本章主要讲解开发中用得 * 频繁的组件,如容器组件、图片组件、文本组件、图标组件和表单组件等。
第 5 章介绍 Material Design 风格的组件,Material Design 风格是一种非常有质感的设计风格,并提供一些默认的交互动画。本章将分类介绍这些组件。
第 6 章介绍 Cupertino 风格的组件,这是一类 iOS 风格的组件,如 CupertinoTabBar、CupertinoPageScaffold、CupertinoTabScaffold、CupertinoTabView 等。
第 7 章介绍页面布局的基础知识和技巧,如基础布局处理、宽高尺寸处理、列表及表格布局等,* 后通过一个综合布局示例来演示如何编写复杂的页面。
第 8 章介绍如何处理手势,如轻击、拖动和缩放等。Flutter 中提供 GestureDetector 进行手势检测,并为手势检测提供了相应的监听。
第 9 章介绍如何加载、处理、展示资源和图片,如添加资源和图片、自定义字体等。
第 10 章介绍路由及导航是如何处理的,包括页面的渲染以及数据传递。
第 11 章介绍组件装饰和视觉效果的处理,如 Opacity(透明度处理)、DecoratedBox(装饰盒子)、RotatedBox(旋转盒子)、Clip(剪裁处理)和 CustomPainter(自定义画板)。
第 12 章介绍动画效果的制作,包含两个动画组件的使用:用 AnimatedOpacity 实现渐变效果、用 Hero 实现页面切换动画。
第 13 章介绍 Flutter 插件开发的入门知识。Flutter 插件可以和原生程序打交道,比如调用蓝牙、启用 WIFI、打开手电筒,等等。
第 14 章介绍开发工具及使用技巧,介绍几款常用的 IDE 工具,从代码的编写、辅助功能、程序调试、性能分析等多方面讲解工具及使用技巧。
第 15 章介绍测试与发布应用,包括:测试应用、发布 Android 版和 iOS 版 App。
第 16 章通过一个综合案例介绍如何使用 Flutter 实现即时通讯 App 的界面。

在 Dart 里,变量声明使用 var 关键字,如下所示:

复制代码
var name = '小张';

在 Dart 语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值为 null。下面的示例代码判断 name 是否为 null:

复制代码
int name;
if(name == null);

1. 常量和固定值

常量及固定值在开发中很常见,比如星期一到星期天、一年 12 个月,这些数据都可以定义成常量形式。

  • 如果定义的变量不会变化,可以使用 final 或 const 来指明。const 是一个编译时的常量,final 的值只能被设定一次,示例如下:
复制代码
final username = '张三'; // 定义了一个常量
// username = '李四'; // 会引发一个错误

第一行代码设置了一个常量,如果第二行进新重新赋值,那么将引发异常。

  • 通过对 const 类型做四则运算将自动得到一个 const 类型的值。下面的代码会得到一个常量,计算圆的面积:
复制代码
const pi = 3.1415926;
const area = pi * 100 * 100;

可以通过 const 来创建常量的值,就是说 const[] 本身是构造函数,示例代码如下所示:

复制代码
final stars = const [];
const buttons = const [];

2. 基本数据类型

Dart 语言常用的基本数据类型包括:Number、String、Boolean、List、Map。

(1)Number 类型

Number 类型包括如下两类:

  • int 整形。取值范围:-2^53 到 2^53。
  • doble 浮点型。64 位长度的浮点型数据,即双精度浮点型。

int 和 double 类型都是 num 类型的子类。int 类型不能包含小数点。num 类型包括的操作有:+,-,*,/ 以及位移操作 >>。num 类型包括的常用方法有:abs、ceil 和 floor。

(2)String 类型

String 类型也就是字符串类型,在开发中大量使用。定义的例子如下所示:

复制代码
var s1 = 'hello world'; // 单双引号都可以

String 类型可以使用 + 操作,非常方便,具体用法示例如下所示:

复制代码
var s1 = 'hi ';
var s2 = 'flutter';
var s3 = s1 + s2;
print(s3);

上面代码打印输出”hi flutter“字符串。

可以使用三个单引号或双引号来定义多行的 String 类型,在 Flutter 中我们专门用来表示大文本块。示例代码如下所示:

复制代码
var s1 = '''
请注意这是一个用三个单引号包裹起来的字符串,
可以用来添加多行数据。
''';
var s2 = """ 同样这也是一个用多行数据,
只不过是用双引号包裹起来的。
""";

(3)Boolean 类型

Dart 是强 bool 类型检查,只有 bool 类型的值是 true 才被认为是 true。有的语言里 0 是 false,大于 0 是 true。在 Dart 语言里则不是,值必须为 true 或者 false。下面的示例代码编译不能正常通过,原因是 sex 变量是一个字符串,不能使用条件判断语句,必需使用 bool 类型才可以:

复制代码
var sex = '男';
if (sex) {
print('你的性别是!' + sex);
}

(4)List 类型

在 Dart 语言中,具有一系列相同类型的数据称为 List 对象。Dart 里的 List 对象类似于 JavaScript 语言的数组 Array 对象。定义 List 的例子如下所示:

复制代码
var list = [1, 2, 3];

List 对象的第一个元素的索引是 0,最后一个元素的索引是 list.lenght – 1,代码如下所示:

复制代码
var list = [1,2,3,4,5,6];
print(list.length);
print(list[list.length - 1]);

上面的代码输出长度为 6,最后一个元素值也为 6。

(5)Map 类型

Map 类型将 key 和 value 关联在一起,也就是健值对。像其他支持 Map 的编程语言一样,key 必须是唯一的。

如下代码是 Map 对象的定义,示例定义了一个关于星期的键值对对象:

复制代码
var week = {
'Monday' : '星期一',
'Tuesday': '星期二',
'Wednesday' : '星期三',
'Thursday': '星期四',
'Friday': '星期五',
'Saturday': '星期六',
'Sunday': '星期日',
};

也可以使用 Map 对象的构造函数 Map() 来创建 Map 对象,如下所示:

复制代码
var week = new Map();
week['Monday'] = '星期一';
week['Tuesday'] = '星期二';
week['Wednesday'] = '星期三';
week['Thursday'] = '星期四';
week['Friday'] = '星期五';
week['Saturday'] = '星期六';
week['Sunday'] = '星期日';

添加新的 key-value 对,再给 week 添加一个值,注意,其中 0 为键不是数组的下标索引:

复制代码
week['0'] = '星期一';

检查 key 是否在 Map 对象中:

复制代码
assert(week['Monday'] == null);

使用 length 来获取 key-value 对的数量,现在我们调用 length 输出长度结果为 8,原因是后面又添加了一个数据,代码如下所示:

复制代码
print(week.length);

Flutter技术入门与实战(25):开启Flutter之旅 3.2

购书地址 https://item.jd.com/12526484.html?dist=jd

评论

发布