背景

  • 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开发中我们重要的文件为libpubspec.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的基本语法跟很多面向对象语言一样,可能的区别就是写法,以及多了箭头函数=>
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐