Flutter基础知识

发布于:2025-08-04 ⋅ 阅读:(15) ⋅ 点赞:(0)

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{
}

网站公告

今日签到

点亮在社区的每一天
去签到