跨平台Flutter-Dart语言常用语法
躬耕8年iOS 前京南互联网大厂研发-大民哥带你认识跨平台flutter基本语法,后续会随着项目使用不断更新,如有疑问欢迎留言讨论
·
背景
- Flutter即是框架也是SDK,Flutter是以Dart编程语言为基础的框架,里面融合了一些软件开发的SDK工具包。
准备
- VSCode
- flutter开发环境
flutter工程认识
创建flutter项目
- 我们创建一个名为flutter_first_app的flutter项目
flutter create flutter_first_app

All done! 代表创建成功
flutter工程结构
- VSCode安装flutter插件,VSCode中也有汉化插件,如果不想看英文也可以用汉化插件把VSCode汉语化

- 把我们创建的flutter工程文件夹在VSCode中打开,

- 这样我们就看到了一个flutter工程项目的雏形

- .dart_tool:dart的开发工具,提供一些dart工具库所在的位置和信息
- .idea:Android Studio生成的东西,记录了项目的一些文件的变更记录
- .vscode:VSCode配置文件
- android:生成的Android项目,可用Android Studio打开的原生代码工程
- build:打包生成各端环境的二进制包,生产上线使用
- ios:生成的iOS项目,可用Xcode打开的原生代码工程
- lib:文件夹内存放我们的dart语言代码,flutter开发的核心文件
- linux:生成linux端项目
- macos:生成macos端项目
- test:存放我们的测试代码
- web:生成web端项目
- windows:生成Windows端项目
- .gitignore:git忽略配置文件
- .metadata:IDE 用来记录某个 Flutter 项目属性的的隐藏文件
- .packages:pub 工具需要使用的,包含 package 依赖的 yaml 格式的文件
- analysis_options.yaml:该文件配置分析器,分析器将静态地分析Dart代码,检查错误,警告和检测
- .iml:工程文件的本地路径配置
- pubspec.lock:当前项目依赖所生成的文件
- pubspec.yaml:当前项目的一些配置文件,包括依赖的第三方库、图片资源文件等
根据文件结构,在flutter开发中我们重要的文件为lib和pubspec.yaml,关联着flutter项目的开发和配置
Dart基本语法
Dart语言认识
- Dart计算机编程语言起源于谷歌,可被用于web、服务器、移动应用以及物联网等领域的开发,是面向对象、类定义、单继承的语言,语法与C语言类似,并且可转译为JavaScript,支持接口、混入、抽象类、具体化泛型、可选型及sound type system。
Dart基本语法
Dart的语法跟Swift非常像
基础类型
// flutter的main函数
void main(){
print("hello word");
// 单行注释
/*
* 多行注释
*/
//所有有效代码都要在main函数里面
//变量 和 数据类型
int count = 222;
double yzm_double = 5.333;
// String类型
String title = "hello flutter";
// Boolean
bool isBest = true;
// String 转译 eg:I'm flutter
String str1 = 'I\'m flutter';
String str2 = "I'm flutter";
// Sting 拼接, 非同类型的拼接 $
String title2 = "I V U";
print(title+title2+yzm_double.toString()+"${count}");
// $变量
int a = 10;
int b = 30;
print("the sum of $a and $b is ${a + b}");
// 注意✔✨:建议使用["my name is $title"] 替代["my name is " + name]
}
语句
- 基本语句与Swift语法基本一样
// if条件判断
var sala = 30000;
if (sala > 3000) {
print("$sala > 3000");
} else if (sala < 3000){
print("$sala < 3000");
} else {
print("$sala == 3000");
}
var bala = 20000;
// 三目运算 ? :
var cala = sala < bala ? sala : bala;
print(cala);
// ?? 跟Swift语言一样 表示为空时 默认兜底
Null name = null;
String safename = name ?? "hello flutter";
print(safename);
// switch条件判断
int type = 1;
switch (type) {
case 1:
break;
default:
}
// 循环 for, while, do while
// 循环当中关键字 break,continue,return 与大多数语言的用法一样
// for 循环内部定义变量i 随着for循环结束销毁loop
for (int i = 0; i <= 5; i++) {
print(i);
// break;
// continue;
// return;
}
List data = ["guanyu", "zhangfei", "liubei"];
for (var element in data) {
print(element);
}
//while 循环外部定义变量i
int i = 0;
while (i < 5) {
print(i);
i++;
}
do {
print(i);
i++;
}while(i < 5);
//逻辑判断: && || !
var aa = 3;
var bb = 4;
if (aa > 0 && bb > 0){
print("&&");
}
if (aa > 0 || bb > 0){
print("||");
}
if (aa != 2){
print("非");
}
bool isHave = false;
if (!isHave) {
print("bool 非");
}
// isEmpty, isNotEmpty
String strr = "hhhh";
if (strr.isEmpty) {
}
if (strr.isNotEmpty) {
}
函数
//定义函数+函数传参
void sum(int a, String msg) {
int b = 4;
int sum = a + b;
print(sum);
print(msg);
}
// 函数返回值:
int total() {
int a = 4;
int b = 5;
print("${a + b}");
return a + b;
}
// 箭头函数
void sum1(int a, int b) => print("箭头函数-无返回值:${a + b}");
int total1(int a, int b) => a + b;
/*
int sum = a + b;
print("箭头函数-有返回值:$sum");
return sum;
*/
//函数参数(可选参数[], 参数命名{}),也可设置默认值
String printName(String name1, [String name2, String name3 = "中国"]) => name1 + "--" + name2 + "--" + name3;
void printName1({String name1, String name2}) => print(name1+"--"+name2);
//函数调用
void main(){
print("hello word");
//函数: 具有一定功能的代码段,分有返回值和无返回值(void)
//定义函数:
//函数传参:
sum(5, "test");
//函数返回值+函数默认返回值:
int tottal = total();
//箭头函数(无返回值)
sum1(5, 7);
//箭头函数(有返回值)
int tottal1 = total1(6, 7);
//函数参数(可选参数[], 命名{})
String printN = printName("中国");
print(printN);
printName1(name1: "flutter", name2: "is best");
}
异常捕获
- try…catch :执行代码其中可能异常,一旦发现一次跳转到catch执行,否则catch不会执行
- on :当需要指定异常类型时候使用
- finally:不管什么情况都会执行,包括try catch里面用了return,可以理解为只要执行try或catch,就一定会执行
try {
int result = 12 ~/ 0;
print(result);
} catch (e, s) {
print("is error $e\n $s");
} finally {
print("不管有没有异常都会执行");
}
输出:
类和构造函数
class Student {
int number = 1;
String name = "xiaoming";
void study() {
}
void age() {
}
//构造函数
void study1(int _id, String _name) {
this.id = _id;
this.name = _name;
}
//自定义构造函数
Student.printfCustom(){
print("hello custom");
}
}
类的属性及继承
- setter 和 getter
class Teacher {
String? name;
int? age;
//重新setter 和 getter, 两种方式二选一即可
//方式一:
void set setAge(int num) {
this.age = num;
}
int get getAge {
return this.age;
}
//方式二:
void set setAge(int num) => this.age = num;
int get getAge => this.age;
}
- 类继承 class xxx extends xxx{}
可以实例父类使用,也可以重写父类的方法和属性,子类也可以调用父类的属性和方法
void main(){
print("hello word");
var stu = Student();
var tea = Teacher();
}
class CommonContain {
String name = "";
int age = 0;
}
//继承
class Student extends CommonContain{
//方式一:
void set setAge(int num) {
this.age = num;
}
int get getAge {
return this.age;
}
}
class Teacher extends CommonContain {
//重新setter 和 getter, 两种方式二选一即可
//方式二:
void set setAge(int num) => this.age = num;
int get getAge => this.age;
}
总结
- Dart的基本语法跟很多面向对象语言一样,可能的区别就是写法,以及多了箭头函数
=>
更多推荐



所有评论(0)