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

Posted John_yyll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白快速入门|flutter-快速预览dart的基本语法(持续更新)相关的知识,希望对你有一定的参考价值。

声明变量

  • 明确声明
String a = "aasdad";
  • 类型推导
// 声明一个变量
var a = 1
// 运行期间确定值
final b = 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 = const Person("李四");
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注解

将实现与方法声明进行分离

枚举

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


以上是关于小白快速入门|flutter-快速预览dart的基本语法(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

flutter快速入门

Flutter -- 实战快速入门 Flutter

帮你整理一份快速入门Flutter的秘籍

Dart/Flutter:快速检查 404 链接列表

不会Dart,还搞什么Flutter?

快速学习Dart语言