Flutter_01_零散知识

Flutter、Golang、Python、编译原理、算法、Chrome原理学习系列文章抢先看请关注【码农帮派】:

 

1. Dart的零散知识点

  • Dart需要一个函数入口

void main() {      print("Hello World!"); }
  • Dart中变量的类型必须是明确指定的或者系统能够解析的

String name; var name = 'Dragon';
  • Dart中没有初始化的变量的初始值为null(注意:Dart中数字也是对象,所以数字类型的变量在没有初始化的时候初始值也是null)

  • Dart中,只有布尔类型的true才会被是为true

var myNull = null if (myNull == null) {      print("myNull is null"); }

2. 从Dart1.2开始,提供了null-aware运算符可以用来检测null

 

?. 运算符在左边为null的情况下,会阻断右边的调用,?? 运算符主要作用是在左侧表达式为null的时候,为其设置默认值。

对于表达式:

outgoing[a]?.contains(b)

如果outgoing为null、或者outing[a]为null、或者contains(b)的值为null,都会导致表达式为null。

【注意】?? 运算符只有当其左侧的表达式为null,才会赋予??右边的默认值。

 

3. Dart中使用Future实现异步操作

在Dart中,async函数返回一个Future,函数的主体将稍后执行,await运算符用于等待一个Future完成。

4. Flutter项目

创建Flutter项目:

->  flutter create <projectName>

运行Flutter项目:

-> flutter run -d 'iPhone X'

【说明】-d后面是设备名称,要是需要运行IOS模拟器,可以使用下面两条命令:

  • 查看当前电脑有哪些可用IOS模拟器: xcrun instruments -s

  • 上一条命令查看设备号,然后启动设备: xcrun instruments -w  '设备号'

Flutter项目的工程目录:

 

【说明】Flutter虽然是跨平台方案,但需要一个容器最终运行到Android和IOS平台上,所以Flutter项目实际上就是一个同时内嵌了Android和IOS原生子工程的父工程:我们在lib目录下进行Flutter代码开发,而某些特殊场景下的原生功能,则在对应的Android和IOS工程中提供相应的代码实现,供对应的Flutter代码引用。

5. 资源文件

Flutter中assets可以是任意类型的文件,不仅仅是图片,assets放置的路径也可以自定义(但需要在lib目录下),下面的资源文件:

my-assets/data.json

上面在自定义目录my-assets下放置data.json的文件,需要在pubspec.yaml中声明:

assets:    - my-assets/data.json

然后在代码中访问资源:​​​​​​​

import 'dart:async' show Future; import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {      return await rootBundle.loadString('my-assets/data.json'); }

6. 资源图片的像素

Flutter像IOS一样,遵循了一个简单的基于像素密度的格式,图片资源可能是1.0x 2.0x 3.0x或者其他的任何倍数,这个设备像素密度(devicePixelRatio)表示了物理像素到单个逻辑像素的比例。Android不同像素密度的图片和Flutter的像素比率的对应关系:​​​​​​​

ldpi      0.75x mdpi      1.0x hdpi      1.5x xhdpi     2.0x xxhdpi    3.0x xxxhdpi   4.0x

我们有1.0x 2.0x 3.0x三个分辨率的图片,将它们都命名为my_icon.png,进行下面方式放置:​​​​​​​

images/my_icon.png        // Base: 1.0x image images/2.0x/my_icon.png   // 2.0x image images/3.0x/my_icon.png   // 3.0x image

接下来就可以在pubspec.yaml文件中如下声明:

assets:  - images/my_icon.png

使用资源图片:​​​​​​​

AssetImage('images/my_icon.png'); Image.asset('images/my_icon.png');

Flutter会根据当前设备的分辨率加载资源文件夹下不同分辨率的my_icon.png。

7. 组件状态修改

Flutter中组件状态的改变,一定要配合使用setState,通过调用setState方法,Flutter会在底层标记Widget的状态,随后触发重建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值