Flutter(Dart)

    科技2025-10-11  16

    Flutter(Dart)

    概述

    强类型语言、静态类型

    指定变量的类型编译器编译时期就进行了检查(类型安全)

    面向对象

    OC、JAVA、Dart

    JIT&AOT

    即时编译,开发期间。更快编译更快重载事前编译,release期间,更快更流畅

    基础

    数据类型

    数字

    numintdouble

    字符串 String

    subString(1,5)

    字符串截取

    indexOf(“XX”)

    xx:获取指定字符串位置

    startWith

    判断开始位置的字符串

    replaceAll

    替换指定地字符串

    etc:查看文档,当需要的时候

    布尔 bool

    强类型检查

    只有bool的类型的值是true 才被认为是true

    集合 List

    List list = [1,2,‘集合’]

    List listInt = [‘String’] 使用泛型,强类型检查后,编译期间直接抛错

    listInt = list; //build 期间之间抛错 (错误做法,类型转换错误)

    remove

    insert

    sublist

    indexOf

    通过迭代器的形式:

    遍历

    for

    for in

    for(val obj in list){}

    forEach

    list.forEach( (val){//语句xxx} )

    Map

    Map 是将Key和value 相关联的对象,key 和value 都可以是任何类型的对象,并且key是唯一的如果后来有从重复的则会把前边的key进行覆盖

    初始化

    Map names = {“name1”:“bean”}Map ages = {}; ages[“key1”] = value1

    遍历

    for (var key in ages.keys){ print(’$key ${ages[key]}’); }

    调用map 方法生生成新的map

    Map ages2 = ages.map((k,v){ //迭代生成一个新Map return MapEntry(v, k);//和之前的MAP的K,V 刚好相反 });

    forEach

    names.forEach((k, v ){ print(‘ k , k, k,v’); });

    混淆点

    Object

    Dart基类

    只能调用Object 存在的方法类型可以被反复修改和dynamic唯一的区别是在静态类型检查上

    dynamic

    对象的基础类型,数据类型可以反复被修改

    通常不使用,原因是静态类型检查不会抛错,运行时会crash,

    var

    一旦定义,不允许被修改。(系统会动态推断数据类型)

    面向对象

    封装、继承、多态(重载)

    类(重要)默认继承:Object

    对象

    变量

    私有变量定义 _privateVar

    方法

    构造方法 (是方法的一种)

    标准构造方法

    Person(this.xx , this.xx)

    初始化列表

    除了调用父类构造器,在子类构造方法体之前,可以初始化实例变量,不同的初始化变量之间用逗号分割

    Student(this._school, String name, int age, {this.city,this.country = “china”}) : name = ‘$country and $city’, super(name, age){ print(‘方法体不是必须的’); }

    如果父类没有默认构造的方法(无参的构造方法),则需要在初始化列表中调用父类的构造方法进行初始化

    方法体可省略

    命名构造方法

    结构[类名+.+方法名]先使用父类的构造方法进行初始化是一种特殊的构造方法(针对flutter而言)方法体可以省略

    工厂构造方法

    factory 标识唯一实例更像是其他语言里边的单例:大多约定使用static更像是一种模式使用工厂模式来定义构造方法就称为工厂构造方法

    命名工厂构造方法

    网络请求,数据解析时候会经常用到factory [类名+.+方法名]可以又返回值,不需要讲类的final变量作为参数,是提供一种灵活获取类对象的方式。

    可选参数/默认参数

    默认参数一定是可选参数初始化的时候需要使用 {} 包括起来非构造方法独有,其他的方法也可以使用

    实例方法

    除了构造方法外都是实例方法

    setters 和 getters

    让外界对内部属性进行设值/获取值

    String get => _schoolset school(String vlue){_school = value}

    静态方法

    static myPrintFun(){ print(‘msg is print’) }类名+方法 进行调用

    抽象

    抽象类

    abstract 关键字修饰抽象类不能被实例化定义接口的时候比较常用。类似与虚基类类可以没有抽象方法,如果有抽象方法则是抽象类

    抽象方法

    在抽象类里边存在的方法,称为抽象方法

    mixins

    必须继承Ojbect

    不能有构造方法

    不能调用super

    特性是可以快速复用代码

    使用mixins

    需要在with关键字后边跟上一个或多个mixins的名字《逗号分割》with要用在extends后边

    泛型

    可以提高类型检测

    提高了类、接口、方法的复用性

    对不特定数据类型的支持

    泛型类、构造方法中也可以使用泛型、泛型方法

    异步

    async await

    Future

    Stream

    技巧

    善于使用封装达到尽可能少的代码做更多的事情(复用)

    继承(快速的使用其它类已经实现的代码)

    多态(主要是方法的重用、重载)

    点点点技巧

    例如:写了一个类,然后使用.的方式查看这个类有什么属性和方法通过点击方法进去看看方法具体的实现已经之间的关系如果之间存在着继承或者深层嵌套,则积蓄点进去,进行查看类之间的关系

    关于异常的判断

    可以使用?.的形式 避免访问时候crash

    例如List list = List();list.length则会crashlist?.length则不会

    可以使用?? 提供一个默认值

    也可以使用数组的形式判断多个条件的匹配

    例如:["",null,]

    学习资料

    http://dart.goodev.org/guides/language/effective-dart

    https://dart.dev/guides/language/language-tour

    https://dart.dev

    函数/方法

    方法构成

    返回值

    参数

    普通参数可选参数参数默认值

    方法类型

    入口方法

    main 方法

    构造方法

    初始化类变量的方法

    实例方法

    setters/getters

    静态方法

    抽象方法

    私有方法

    匿名方法

    泛型方法

    心得

    Dart的类名字为大写,但文件名字一般都为小写(区别于其他的文件 )

    下划线可以标示私有方法、类、变量

    不像是OC,没有*号的概念,在创建对象的时候

    Floating Topic

    XMind - Trial Version

    Processed: 0.012, SQL: 8