Flutter基础知识

Flutter是Google公司发布的一个用于创建跨平台、高性能觉得移动端应用的UI框架,可以在iOS和Android上快速搭建原生用户界面。

Flutter框架,其实是一个跨平台的移动端开发框架,使用的是Dart语言,它通过Dart实现的SDK。

Dart语言

Dart语言是面向对象的、类定义的、单继承的语言。

1. Dart的内置数据类型

数据类型 说明 实例
String 字符串类型 var str1='Single quotes.' 或 var str2="Double quotes."
int 整型 var num1=1;
double 64位双精度浮点数 var num3=1.2;
bool 布尔类型 var bol=true;
List 列表 var list1=[1,2,3,6,7,8] 或者 var list2=['Apple','Banana','Cherry','Durian']
Map 键值映射 var map1={'a':'apple','b':'banana','c':'cherry'}

2. 变量和常量的声明

定义变量的方法
  • 显示定义

    int a = 0;
    String cc='';

  • 隐式定义
    使用var关键字定义的变量,不指定类型,通过系统自动判断,赋值后确定类型,不能再次改变。

    var aa = 0;
    var dd = ' ';

定义常量的方法
  • 使用const关键字定义的编译时常量,它必须是一个字面常量。
  • 使用final关键字**定义的是运行时常量,也就是它的值可以是一个变量。

3. 函数定义

  • 普通函数

    int add(int a,int b){
    return a+b;
    }

  • 可选参数

    int add(int a, int b, {int c=0}){
    return a+b+c;
    }

  • 匿名函数

    int function=(int a,int b){
    return a+b;
    }
    function(2,1);

  • 箭头函数

    int add(int a, int b, int c) => a+b+c;
    匿名函数和箭头函数组合起来使用,具体用法如下:
    int function(int a, int b, int c)=>a+b+c;

4. 条件表达式和运算符

部分操作符 说明
is 判断某个变量是不是指定的类型,若是返回true
is! 与is相反
as 相当于java中instanceOf,用于类型转换
condition?expr1:expr2 如果condition为true就返回expr1表达式的值,否则返回expr2表达式的值。
... 级联运算符,链式调用。 实例:Student().setGender()...setAge();
expr1??expr2 如果expr1不为null就返回expr1,否则返回expr2。

5.条件和循环表达式

  • if...else...

  • switch...case...default...

  • for循环

  • while循环

  • do...while...

  • List遍历

    for(var ddd in list){
    //遍历list
    }
    list.forEach((ddd){
    //遍历list
    })

  • Map遍历

    for(var key in map.keys){
    print("key:key, value:{map[key]}"); //输出key和value
    }
    map.forEach((key,value){
    print("key:key,value:value"); //输出key和value
    });

6.定义类

Dart使用class关键字定义类,这一点和java类似。

  • 构造函数

    class Student{
    String name;
    String age;
    Student(String name, String age){
    this.name = name;
    this.age = age;
    }

在Dart中定义class有一种简便写法,具体用法如下:

复制代码
class Student{
	String name;
	String age;
	Student(this.name, this.age);
}
若没有定义构造函数,则会有一个默认的无参构造函数。
  • 运算符重载
    运算符重载在Dart中指的是类的运算符重载,主要作用是当我们想让两个对象相减,然后得出相关属性的相减,默认情况下是没有对象相减这个功能的,这时就可以用重载"-"运算符完成上述功能,具体用法如下。

    class Student{
    String name;
    String age;
    Student(this.name, this.age);
    operation -(Student student){
    return Student(student.name, this.age-student.age);
    }
    }

Dart语言允许重载的运算符有:+加,-减,*乘,/除,%求余,^位异或,/除以取整,>大于,<小于,>=大于等于,<=小于等于,>>右移,<<左移,&位或,|位与,[]列表访问,一元按位补码(0 变为 1;1 变为 0)

  • extends、with、implements、abstract的用法
    (1)Dart类的继承使用extends关键字,只能继承一个类,具体用法如下。

    class Student1{}
    class Student2 extends Student1{}

子类重写父类的方法需要使用@override关键字,调用父类的方法需要使用super关键字,这样子类可以访问父类所有的变量和方法。

(2) Dart语言中使用with 关键字来继承多个类,具体用法如下。

implements

复制代码
class Student1{
	String getName(){
		return "";
	}
}
class Student2{}
class Student3{}
class Student4 extends Student1 with Student2, Student3{}
class Student5 with Student1, Student2{}

(3)Dart语言中虽然没有interface关键字定义接口,但是Dart中每一个类都是一个隐式的接口,而且还包括类的所有方法、变量。所以,当我们想要实现一个类时,需要在子类中实现该类的方法、变量。具体用法如下。

复制代码
class Student1{
	String getName(){
		return "";
	}
}
class Student6 implements Student1{
	@override
	String getName(){
		return null;
	}
}

(4)在Dart中abstract关键字是定义抽象类的,子类继承抽象类时需要实现其抽象方法,具体用法如下。

复制代码
abstract class Student1{
	String getName();
}
class Student2 extends Student1{
	@override
	String getName(){
		return null;
	}
}
  • 定义私有变量
    在Dart中没有public、private等修饰符,如果想要定义私有变量,就要在属性名称前面加上"_"。需要注意的是,这种定义私有变量的作用域只是当前的Dart文件,其他Dart文件无法访问,具体用法如下。

    class Student1{
    String name;
    int _age; //私有变量
    Student1(this.name, this._age)
    }

7.异常捕获

在Dart中使用try...catch和try...on关键字来捕获异常。这二者的区别在于,on捕获指定的异常,但是不能处理异常。catch不能捕获指定的异常,但是可以处理异常。

复制代码
try{
//
}on Exception catch(e){
//捕获指定异常并处理
print("exception:$e")
}finally{
}
相关推荐
ALLIN1 天前
Flutter 三种方式实现页面切换后保持原页面状态
flutter
Dabei1 天前
Flutter 国际化
flutter
Dabei1 天前
Flutter MQTT 通信文档
flutter
Dabei1 天前
Flutter 中实现 TCP 通信
flutter
孤鸿玉1 天前
ios flutter_echarts 不在当前屏幕 白屏修复
flutter
前端 贾公子1 天前
《Vuejs设计与实现》第 16 章(解析器) 上
vue.js·flutter·ios
tangweiguo030519872 天前
Flutter 数据存储的四种核心方式 · 从 SharedPreferences 到 SQLite:Flutter 数据持久化终极整理
flutter
0wioiw02 天前
Flutter基础(②④事件回调与交互处理)
flutter
肥肥呀呀呀2 天前
flutter配置Android gradle kts 8.0 的打包名称
android·flutter
吴Wu涛涛涛涛涛Tao2 天前
Flutter 实现「可拖拽评论面板 + 回复输入框 + @高亮」的完整方案
android·flutter·ios