小白快速入门|flutter-快速预览dart的基本语法(持续更新)

博观而约取,厚积而薄发。这篇文章主要讲述小白快速入门|flutter-快速预览dart的基本语法(持续更新)相关的知识,希望能为你提供帮助。
声明变量

  • 明确声明
String a = "aasdad";

  • 类型推导
// 声明一个变量
var a = 1
// 运行期间确定值
finalb = DateTime.now();
// 编译期间确定值
const c = 2

类创建及使用
# 创建类
class Person
String name;
Person(String name)
this.name = name;


# 创建实例可以省去new 关键字
final p =Person("张三");
Print(p.name);

实例对象进行比较
class Person
final String name;
const Person(this.name);

final p = Person("李四");
final p2 = Person("李四");
print(identical(p, p2)); // false

# 使用const进行修饰的构造器,内容相同,则他们比较则相同
const p3 = const Person("李四");
const p4 = constPerson("李四");
print(identical(p3, p4)); // true

字符串操作 字符串声明
main(List< String> args)
var a = a;
var b = "b";
var c = """
dsfasf
我换行了
adasd
""";
print(a);
print(b);
print(c);

字符串拼接
# a,b,c是变量
var d = "我是 $a 你是 $b 他是 $c";
print(d);

集合
main(List< String> args)
//列表
var list = ["a","b","c"];
list.removeLast();
// list.removeAt(0);
list.add("d");
list.length;
// 集合
var set = "d","e","f";
set.add("g");
set.contains("d");
set.length;
//map
var map = "name":"张三","age":11;
map.putIfAbsent("test", () => "name");
map.length;
print(map.values);

函数 必选参数
main(List< String> args)
// 必选参数必须传
print(hello1("abc"));
// hello1();

String hello1(String name)
return name;

dart没有函数重载
可选参数调用
main(List< String> args)
// 命名可选参数
print(hello2("张三",money: 0.5,age:78));
// 位置可选参数
print(hello3("张三",10,0.4));
// hello1();

// 可选参数可以有默认值
String hello2(String name,int age=5,double money)
return "jinsan";

// 可选参数可以有默认值
String hello3(String name,[int age=10,double money])
return "jinsan";

函数作为参数被调用
main(List< String> args)
// 声明函数调用
funcCall(a);
// 箭头函数调用函数体内只有一行代码
funcCall(()=>
print("箭头函数被调用")
);
// 匿名函数调用
funcCall(()
print("匿名函数被调用1");
print("匿名函数被调用2");
);
// 严格规范函数调用
hello((hello)
return "你好,这是严格规范函数调用:$hello";
);


// 定义函数格式
typedef Hello = String Function(String hello);

void hello(Hello hello)
print(hello("乐哉"));


void funcCall(Function func)
func();


void a()
print("函数a被调用");

运算符
  • 变量 ??= 【新值】。变量为空时才将新值赋值给变量
main(List< String> args)
// var name = zhansan;
var name = null;
// name为空时才赋值
name ??=lisi;
print(name);

  • 变量2 = 变量1 ??新值 变量1 为空则将新值赋值给变量2,否则将变量1赋值给变量2
main(List< String> args)
var name ="zhangsan";
var temp = name ?? lisi;
print(temp);

  • 及联运算符
main(List< String> args)
Util()
..user="乐哉"
..eating()
..washing();

class Util
String user;
void eating()
print("user-eating:$user");

void washing()
print("user-washing:$user");


for循环
main(List< String> args)
var list = ["a","b","c","d"];
for(var i =0; i< list.length; i++)
print(list[i]);


for(var item in list)
print(item);


构造函数 精简构造函数
class Person
String name;
// 精简构造器
Person(this.name);

命名构造函数
main(List< String> args)
// var p = Person("zhangsan");
var p1 =Person.withHeight("zhangsan", 23);


class Person
String name;
int age;
// 精简构造器
// Person(this.name);
// 命名构造函数
Person.withHeight(this.name,this.age);

dynamic与object

dynamic编译时不会报错,运行时有可能会发生潜在危险(不能正确转换)
object 编译时会提示错误

初始化列表

类中声明的final变量必须在定义时赋值或者是在构造器中赋值

class Person
// String name;
final int age;
final int a;
// 精简构造器
// Person(this.name);
// 使用c++的语法在初始化时赋值a,或者在构造器中赋值
Person.withHeight(this.age):a=3;

初始化列表 默认值的两种方式
class Person
// String name;
final int age;
final int a;
Person.withHeight(this.age,this.a = 10);
Person.withHeight(this.age):a=age> 100?10:0;

# 第一种只能是确定的值
# 第二种可以是表达式,

构造函数重定向
main(List< String> args)
print(Person("张三").name);
print(Person("张三").age);

class Person
String name;
int age;
Person(String name):this.con(name, 10);
Person.con(this.name,this.age);

工厂构造函数 可以手动返回对象
import test/声明变量.dart;

main(List< String> args)
print(Person.name().name);

class Person
String name;
int age;
factory Person.name()
return Person("zhangsan");

Person(this.name);

get_set方法
main(List< String> args)


class Person
String name;
set setName(String name)
this.name = name;

String get getName
return this.name;


类的继承
main(List< String> args)


class Animal
int age;
Animal(this.age);

class panda extends Animal
String name;
// 构造器必须调用父类的方法进行初始化
panda(this.name,int age) : super(age);


external 关键字,patc注解
【小白快速入门|flutter-快速预览dart的基本语法(持续更新)】
将实现与方法声明进行分离

枚举
main(List< String> args)
print(Enum.FAILD);
print(Enum.values);
print(Enum.SUCCESS.index);

enum Enum
SUCCESS,
FAILD,
NORMAL

库的导入
  • 导入系统库
import dart:库名

  • 导入自定义库
import 库的路径 [as 别名,库冲突使用别名来区分]

  • 公共的dart文件抽取 export

  • 使用第三方库

使用yaml文件声明需要依赖的库,当前目录下配置文件,(类似于maven的pom.xml) pubspec.yaml
依赖网址
???Dart packages??

name: darts
description: a dart lib
dependencies:
http: ^0.12.2
// 具体的依赖版本可以在镜像网站查找 [Dart packages](https://pub.flutter-io.cn/)


导入依赖,在命令行下执行一下命令

pub get




    推荐阅读