欧根喵
欧根喵
Published on 2026-01-27 / 2 Visits
0
0

Flutter - 学习 基础 第一天

Dark 安装 直接使用FlutterSDK环境进行安装

Vscode 安装 Flutter 插件 将sdk下载到sdk 目录下 同时将sdk的环境变量放到里面

E:\SDK\flutter\flutter\bin

文件后缀以.dart 后缀结尾

入口: dart 文件的入口方法为main方法

分号: dart 文件绝大部分语句都需要结尾添加分号 花括号不添加分号

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

正式学习!

var 变量

var 第一次声明之后 变量类型就固定了 不允许更改类型了

语法 和 javaScript 一样

var 变量名 = 值/表达式

代码

void main (List<String> args) {
    var age = 20; // 
    print(age);
    var age = 22;  // 不允许第二次声明
    print(age);
}

test.dart:6:9: Error: 'age' is already declared in this scope.
test.dart:6
    var age = 22;
        ^^^
test.dart:2:9: Context: Previous declaration of 'age'.
test.dart:2
    var age = 20;
        ^^^

Exited (254).

const 常量

const表达式中不允许有变量值

const 编译时就已经定死 不能修改

const 常量声明之后不允许更改


void main (List<String> args) {
    var num1 = 3.1415926;    

    const  num = num1; // 此处会报错

    const length = 2 * num * 10;

    print(length);
}

final 常量

场景 当我们需要当前时间作为唯一的操作时间,时间一旦被确定就不能更改

final 是运行时赋值后不允许修改

关键字 final

语法 final 属性名 = 值/表达式


void main (List<String> args) {
    final time = DateTime.now();

    print(time);
}

Dart 中的常用数据类型

String 字符串

关键字 String 别名 字符串

语法 String 属性名 = "文本内容"

可以被修改


void main (List<String> args) {
    String day = "今天是个好日子";

    print(day);

    day = "今天糟糕透了";

    print(day);

}

模板字符串

String 属性名 = ‘文本内容$变量名’ 或者 ‘文本内容${变量名}’

更推荐第二种写法


void main (List<String> args) {
    String day = "今天是个好日子";

    print(day);

    day = "今天糟糕透了";

    print(day);

    var time = DateTime.now();

    String text = '现在是${time},我必须立即赶到战场!';

    print(text);
}

int / num / double 数字类型

区分

int 纯整数类型

num 可整数 可以小数

double 只小数

int 不能直接等于 double 需要使用下面的方法进行间接赋值

使用 .toInt .toDouble 进行间接赋值

double int 之间不能直接赋值

num 不能直接给 double 赋值

double 可直接给 num 赋值


void main (List<String> args) {
    int friendCount = 3;
    print('我有${friendCount}个好兄弟');

    num rest = 1.8;
    print('我有${rest}个月假期');

    double appleCount = 4.1747;

    // friendCount = appleCount; // 不允许直接赋值

    friendCount = appleCount.toInt();
    


}

bool 布尔类型

关键字 bool

语法 bool 变量名 = true / flase

List 列表类型

关键字List

语法 List


void main (List<String> args) {
    List Student = ['赵三','李四','王五'];    

    print(Student);

}

List 常用的操作方法

第一个元素 .farst

最后一个元素 .last

是否为空 .isEmpy

尾部添加 .add()

尾部添加一个列表 .addAll()

删除满足内容的第一个 .remove()

删除最后一个 removeLast()

删除索引范围内数据 removeRange (strat,end)

end 不在范围内

循环 forEach((item) {});


void main (List<String> args) {
    List Student = ['赵三','李四','王五'];    

    Student.forEach((item){
        print(item);
    });

}

是否都满足条件 every((item) {return 布尔值});

void main (List<String> args) {
    List Student = ['赵三','李四','王五'];    

    print(Student.every((item) {
        return item.toString().startsWith("赵");
    } ));
}

筛选出满足条件的数据 where((item) {return 布尔值} );


void main (List<String> args) {
    List Student = ['赵三','赵四','赵五'];    

    print(Student.where((item){
        return item.toString().startsWith("赵");
    }));
}

列表长度 .lenght

Map 类型

类似js中的键值对 json数据


void main (List<String> args) {
    Map transMap = {
        "lunch" : '午饭',
        "morning" : '早上',
        "hello" : '你好'
    };

    print(transMap);

    String value =  transMap["lunch"];  // 查找

    print(value);

    transMap["hello"] = "clalio";  // 修改

    print(transMap);
}

循环 forEach

void main (List<String> args) {
    Map transMap = {
        "lunch" : '午饭',
        "morning" : '早上',
        "hello" : '你好'
    };

    transMap.forEach((key,vlaue){
        print('正在打印$key,$vlaue');
    });
}

添加一个字典 .addAll

transMap.addAll({"fine":"非常好"});

检查是否包含某个key .containsKey

transMap.containsKey("fine");    // true / false

删除某个key .remove

transMap.remove("fine"); 

清空 .key

transMap.clear(); 

dynamic 动态类型

允许自由改变类型 绕过编译时的静态检查


Comment