• Flutter ☞ 变量


    Flutter中,变量分为两种类型

    • 弱类型
    • 强类型

    弱类型

    var

    如果没有初始值,可以变成任何类型

    var a;
    // var a = ''; // 一旦赋值,就确定类型,不能随意改动
    a = 'abc';
    a = 123;
    a = true;
    a = {'key': '123'};
    a = ['abc'];
    
    print(a)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Object

    动态任意类型, 编译阶段检查类型

    Object a = '123';
    a = 123;
    a = [2222];
    a.p();
    
    • 1
    • 2
    • 3
    • 4

    dynamic

    动态任意类型,编译接点不检查类型

    dynamic a = '123';
    a = 123;
    a = [1111];
    a.p();
    
    • 1
    • 2
    • 3
    • 4

    比较 vardynamicObject

    • var 如果有初始值,则类型会被锁定

    强类型

    声明类型

    类型声明后,类型会被锁定

    String a;
    a = '123';
    a = 123
    
    • 1
    • 2
    • 3

    常见类型

    名称说明
    num数字
    double浮点
    bool布尔
    String字符串
    StringBuffer字符串 Buffer
    DateTime时间日期
    Duration时间区间
    List数组
    Sets集合
    Mapskey-value容器
    enum枚举
    String a = "123";
    int i = 123;
    double d = 0.12;
    bool b = true;
    DateTime dt = DateTime.now();
    List l = [1, 2, 3, 4];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    默认值

    变量声明后未确定值的,默认都是 null

    var a;
    String a;
    print(a);
    assert(a == null)
    
    • 1
    • 2
    • 3
    • 4
    assert

    assertObjective-C中的函数相同,检查点函数,如果不符合条件直接抛出错误并中止程序进程。只在 Debug 模式下生效。

    使用场景

    var 简化定义变量

    不用明确变量类型

    var map = <String, dynamic>{};
    map['image'] = image;
    map['title'] = title;
    map['desc'] = desc;
    
    • 1
    • 2
    • 3
    • 4
    • 如果不使用 var ,就要写成 Map

    查询参数定义

    api 查询通用接口封装的时候,我们一般用动态类型。

    如一个 api 请求

    Future<Response<T>> get<T>(
    	String path, {
    	Map<String, dynamic>? queryParameters,
    	...
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • Map? queryParameters 查询参数值是动态

    返回的实例对象

    如分类实例定义

    class Category {
    	int id; // 数字 id
    	String name; // 字符串 分类名称
    	String slug;
    	Category({this.id, this.name, this.slug});
    	...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • int id; String name; 明确类型
  • 相关阅读:
    Django视图(二)
    常见的自动化工具、Ansible安装
    桃花灿烂
    Ubuntu搭建dhcpv6服务器(Kea DHCP Server V2.3.7)
    python 实现MA指标
    栈的压入、弹出序列
    基于html+node的文化资讯网站设计
    nginx部署
    Docker部署系列之Docker Compose安装Redis三主三从集群
    Ubuntu开机自动挂载SD卡到指定挂载点并将Docker默认存储路径改为SD卡
  • 原文地址:https://blog.csdn.net/LiqunZhang/article/details/133881647