# Flutter 笔记

# 环境搭建

# 安装 Flutter SDK

Flutter SDK 下载 (opens new window)

选择Stable channel(稳定版本)
解压后增加\Flutter SDK\bin环境变量
执行flutter --version即可查看当前 Flutter 版本

# 配置镜像

Windows 环境变量修改:点击计算机图标 - 属性 - 高级系统设置 - 高级 - 环境变量

  • 新建 变量 PUB_HOSTED_URL,其值为 https://pub.flutter-io.cn
  • 新建 变量 FLUTTER_STORAGE_BASE_URL, 其值为 https://storage.flutter-io.cn

# 开发环境安装插件

安装插件:

  • Flutter 为 Flutter 开发准备
  • Dart 为 Flutter 开发准备
  • Code Runner 点击右上角的按钮快速运行代码

# 基础语法

# main 函数

简化 main 函数

main(){
  print("Hello World");
}

完整 main 函数,List 列表为命令行参数列表

void main(List<String> args) {
  print("Hello World");
  print(args);
}

# 定义变量

//明确声明
数据类型 变量 =;
//类型推导
var 变量 =;
String name = "abc";
int age = 18;
double height = 1.88;

# 定义常量

final 变量 =;
const 变量;

提示

  • final 可以在运行时赋值
  • const 必须直接赋值常量

# 定义动态变量

动态变量可随时改变其数据类型

dynamic 变量名;

# 数据类型

# 整数类型

int 变量名 = 10;

# 浮点类型

double 变量名 = 1.00;

# 布尔类型

var 变量名 = true;
var 变量名 = false;

# 字符串

var message1 = "Hello World";
var message2 = 'Hello World';
var message3 = """
abc
cba
""";

字符串拼接:

print("${变量} ${变量}");

# 集合

# List

List<String> 集合名 = ["元素1", "元素2"];

# Set

Set 类型不允许重复,一般用来去重

Set<int> 集合名 = {1, 2, 3, 4};
print(集合名);

# Map

Map<String, dynamic> 变量名 = {
  "键1" : "值",
  "键2" : 1
};

# 函数

void 函数名(){

}

返回值类型 函数名() {

}

返回值类型 函数名(参数类型 参数名,参数类型 参数名) {

}

提示

默认值只能用在可选参数

# 位置可选参数

返回值类型 函数名([参数类型 参数名,参数类型 参数名 = 默认值]) {

}

函数名(参数值)
函数名(参数值,参数值)

# 命名可选参数

返回值类型 函数名(参数类型 参数名,{参数类型 参数名}) {

}

函数名(参数值)
函数名(参数值,参数名: 参数值)

# 类和对象

Dart 中,所有类都继承自 Object

# 定义

class 类名 {
  数据类型 属性名;
  void 方法名() {

  }
}

# 实例化

final 实例化名称 = 类名();
实例化名称.方法();
实例化名称.变量 =;

# 构造方法

class 类名 {
  类名(数据类型 参数1,[数据类型 参数2]){

  }
}

# 命名构造方法

class 类名.构造方法名 {
  类名(数据类型 参数1,[数据类型 参数2]){

  }
}

实例化:final 实例化名称 = 类名.构造方法名();

# 常量构造函数

当传入的参数一致时,实例为同一个实例

main(List<String> args) {
  const p1 = Persion("why");
  const p2 = Persion("why");
  print(identical(p1, p2));
}

class Persion {
  final String name;
  const Persion(this.name);
}

# 继承

class 类名 extends 继承类名 {

}

# 抽象类

抽象方法:没有方法定义,没有方法的实现

  • 抽象类不能被实例化
  • 抽象类中可以定义抽象
abstract class 类名 {

}

# 接口

Dart 中,默认所有的类都是接口

class 类名 implements 接口名 {

}

# 混入

mixin 混入名 {

}

class 类名 with 混入名{

}

# 泛型

# 泛型类

class 类名<T> {
  T 变量名;
}

//实例化
类名 实例名 = 类名<String>("参数");
类名 实例名 = 类名<int>(1, 2);

# 泛型方法

T 方法名<T>(参数类型<T> 参数名) {

}

#

导入:export 'url路径'

# 创建项目

菜单 New - Flutter Project 或 flutter create 项目名称

# 界面

# 自定义组件

继承自 StatelessWidget,没有状态,必须实现 build 方法

class ContentWidget extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        "Hello World",
        textDirection: TextDirection.ltr,
        style: TextStyle(fontSize: 36),
      ),
    );
  }
}
最后更新: 2021/6/17 18:07:59