当前位置: 首页 > 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.lryc.cn/news/608356.html

相关文章:

  • 在线问诊系统源码解析:图文+视频双模式架构开发全攻略
  • CH32V单片机启用 FPU 速度测试
  • 江协科技STM32 13-1 PWR电源控制
  • 从零打造大语言模型--处理文本数据
  • FFmpeg+javacpp中纯音频播放
  • 互联网医院系统,互联网医院好处有哪些?
  • 音视频学习(四十八):PCM和WAV
  • CatBoost 完整解析:类别特征友好的梯度提升框架
  • 基于单片机智能雨刷器/汽车刮水器设计
  • zset 中特殊的操作
  • nodejs读写文件
  • 【redis】基于工业界技术分享的内容总结
  • C++ 模板初阶
  • 阿里云:Ubuntu系统部署宝塔
  • 回归预测 | Matlab实现CNN-LSTM-self-Attention多变量回归预测
  • ventoy 是一个非常棒的开源工具,可以制作多系统的usb启动盘
  • 基于落霞归雁思维框架的软件需求管理实践指南
  • Vulnhub ELECTRICAL靶机复现(附提权)
  • 计算机技术与软件专业技术资格(水平)考试简介
  • Dispersive Loss:为生成模型引入表示学习 | 如何分析kaiming新提出的dispersive loss,对扩散模型和aigc会带来什么影响?
  • 《React+TypeScript实战:前端状态管理的安全架构与性能优化深解》
  • 【Unity3D实例-功能-移动】小兵移动-通过鼠标点击进行
  • 咨询进阶——解读57页企业发展战略咨询常用工具【附全文阅读】
  • Java Optional 类教程详解
  • C++ vector底层实现与迭代器失效问题
  • 【智能体cooragent】新智能体创建相关代码解析
  • Node.js 操作 MongoDB
  • Linux系统编程Day3-- Linux常用操作(终)
  • 2025-08 安卓开发面试拷打记录(面试题)
  • 3 使用 Jenkins 构建镜像:将你的应用打包成镜像