当前位置: 首页 > news >正文

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;
double64位双精度浮点数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{@overrideString getName(){return null;}
}

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

abstract class Student1{String getName();
}
class Student2 extends Student1{@overrideString 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{
}
http://www.dtcms.com/a/311771.html

相关文章:

  • SpringBoot与TurboGears2跨栈、整合AI服务、智能客服路由系统整合实战
  • SpringCloud学习第一季-4
  • 第15届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2024年3月10日真题
  • 17、原坐标变换和逆变换在实战中用法
  • 无人机数字图传技术的前沿探索与应用
  • 【昇腾推理PaddleOCR】生产级部署方式
  • 机器学习实战:KNN算法全解析 - 从原理到创新应用
  • LangChain框架入门05:输出解析器使用技巧
  • SpringBoot 服务器配置
  • Json简单的实现
  • 【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题
  • 【Leetcode】2561. 重排水果
  • 【Django】-6- 登录用户身份鉴权
  • 知识随记-----Qt 实战教程:使用 QNetworkAccessManager 发送 HTTP POST
  • 面试小总结
  • 解决技术问题思路
  • STM32学习记录--Day6
  • Spring 中 Bean 的生命周期
  • 知识蒸馏 - 基于KL散度的知识蒸馏 HelloWorld 示例
  • Linux网络编程【UDP网络通信demon】
  • 网页操作自动化解决方案:如何用Browser-Use+CPolar提升企业运营效率
  • React ahooks——副作用类hooks之useThrottleFn
  • 【智能体cooragent】新智能体创建相关代码解析
  • 双网卡UDP广播通信机制详解
  • 海洋大地测量基准与水下导航系列之九我国海洋PNT最新技术进展(下)
  • P13014 [GESP202506 五级] 最大公因数
  • 使用WSL2开发zephyr
  • 重型机械作业误伤预警响应时间缩短80%!陌讯多模态识别算法在工程现场的应用优化
  • 音频3A处理简介之AGC(自动增益控制)
  • RHCE认证题解