《Flutter技术入门与实战》读后总结

4/12/2022 学习Flutter

# 整体评价

作为一本Flutter入门书籍整体上还是不错的,特别是全书在常用组件、布局的介绍上花了很多篇幅,介绍的非常详细,而且每个组件和布局都会配合上一个例子来加深记忆。后期开发完全可以把它作为一本工具书来使用。但文章最后的综合案例显得有些乏力,个人觉得不足以支撑其实战的标签。

# 带给我的帮助

# dart语法部分

在dart语言介绍时罗列了dart语言的常用库,通过该表格就可以轻松的知道我要的类在哪个库中

包名 描述
dart:async 异步编程支持,提供Future Stream类
dart:collection 对dart: core 提供更多的集合支持
dart:convert 不同类型 (json,utf-8)间的字符编码、解码支持
dart:core Dart 建的类型、对象以及 dart 语言核心的功能
dart:html 网页开发用到的库
dart:io 文件读写I/O相关操作的库
dart:math 数字常量及函数,提供随机数算法
dart:svg 事件和动丽的矢量图像支持

Dart 是强 bool类型检查,只有 bool类型的值是 true 才被认为是 true 有的语言里0是false ,大于0是 true。 Dart 语言里则不是,值必须为 true 或者 false这句话让我想到了服务端返回的json数据如果是整型是否可以自动转换为bool类型??

将参数使用中括号[]括起来,用来表明是可选位置参数居然没提到用大括号{}括起来,可以表明是可选命名参数

Dart 一个面向对象的语言, 所以函数也是对象,函数属于 Function 对象这一点和js有些相似

throw '数据非法'我们可以抛出任意对象

dart同名的构造函数只有一个,可用${类名.其他名称}的方式创建命名构造函数

dart可以对运算符进行重载

Mixins (混入功能)相当于多继承,也就是说可以继承多个类,使用with关键字来实现

所谓的云数据就是注解

# 组件和布局

margin、padding、minHeight、maxHeight等Android中组件的属性居然都要通过包裹一层组件来实现

Image.network直接就支持网络图片的加载了

Scaffold实现了基本的 Material design布局, 只要是在 Material design 定义过的单个界面显示的布局组件元素,都可以使用 Scaffold 来绘制这句话阐述了Scaffold的重要地位,它既是MaterialApp的脚手架也是Material design默认样式的持有者

Dialog对话框篇没有介绍如何显示隐藏对话框,需要确认是否需要和前端一样事先写在布局中再通过变量控制其显示??

Cupertino风格的组件相比Material风格的组件会少一些

AspectRatio宽高比可以用来限定正方形头像了

Table表格要是能同时支持上下和左右都能滑动就完美了

布局这一块没有介绍类似ScrollView之类的布局,示例都是使用ListView来实现内容滚动的,需要查阅其他资料来确认??

# 手势、资源和路由

和Android一样使用GestureDetector来进行手势检测,需要确认是否实现点击事件也是这样嵌套??

在特定目录结构内保存资源可实现在不同像素比的手机上加载不同分辨率的图片

../my_icon.png
../2.0x/my_icon.png
../3.0x/my_icon.png

这里并没有详细介绍flutter使用的尺寸单位,仍需要查阅其他资料??

直接通过await获取跳转后的页面返回数据

_navigateToSecondPage(BuildContext context) async { 
  final result = await Navigator.push( 
    context, 
    new MaterialPageRoute(builder: (context) =>new SecondPage()), 
  );
} 

通过继承CustomPainter并重写void paint(Canvas canvas, Size size)方法实现自定义绘制

# 插件开发、打包

文章中提到插件所使用的通道是MethodChannel,其实flutter还提供了其他通道EventChannelBasicMessageChannel用于打通dart和原生之间的通信

打包前仍需要进入原生应用进行相关配置,主要是图标、appId、版本号、签名等等