小白快速入门|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的基本语法(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章