var
,它能够接收任何类型的变量,但最大的不一样是Dart中var变量一旦赋值,类型便会肯定,则不能再改变其类型,如:var t;
t="yc";
// 下面代码在dart中会报错,由于变量t的类型已经肯定为String,
// 类型一旦肯定后则不能再更改其类型。
t=1000;
复制代码
var curPage = 0;
var title = "潇湘剑雨:小杨逗比";
复制代码
//final 表示常量
final title = "潇湘剑雨:小杨逗比";
复制代码
//static const 组合表明了静态常量
static const String complete = "COMPLETE";
复制代码
const
变量是一个编译时常量,final
变量在第一次使用时被初始化。被final
或者const
修饰的变量,而且变量类型能够省略。//定义初始化一个变量
final double number = 13.14;
number = 520;
//调用打印数字方法
printNumber(number);
复制代码
//在Java中,下面操做可行
ToastUtils.showRoundRectToast("二维码扫描"+1000);
//在dart中,下面错误操做,编译不经过,直接会有红色提示
int yc = 0;
print("潇湘剑雨" + yc);
//在dart中,下面正确操做
int yc = 0;
print("潇湘剑雨" + yc.toString());
复制代码
Object
是dart全部对象的根基类,也就是说全部类型都是Object
的子类(包括Function和Null),因此任何类型的数据均可以赋值给Object
声明的对象.
dynamic
与var
同样都是关键词,声明的变量能够赋值任意对象.而dynamic
与Object
相同之处在于,他们声明的变量能够在后期改变赋值类型.dynamic t;
Object x;
t = "hi world";
x = 'Hello Object';
//下面代码没有问题
t = 1000;
x = 1000;
复制代码
dynamic
与Object
不一样的是,dynamic
声明的对象编译器会提供全部可能的组合,而Object
声明的对象只能使用Object的属性与方法, 不然编译器会报错. 如:dynamic a;
Object b;
main() {
a = "";
b = "";
printLengths();
}
printLengths() {
// no warning
print(a.length);
// warning:
// The getter 'length' is not defined for the class 'Object'
print(b.length);
}
复制代码
dynamic
的这个特性与Objective-C
中的id
做用很像.dynamic
的这个特色使得咱们在使用它是须要格外注意,这很容易引入一个运行时错误.//int类型 这里没有long类型
var positionIndex = 0;
//double类型 这里没有float类型
var time = 1993.03;
复制代码
//定义初始化一个变量
double number = 13.14;
复制代码
//相似Java中的布尔类型
bool mIsLogin = false;
if (!mIsLogin) {
//没有登录
print('没有登录');
} else {
//已经登录
Navigator.of(context).push(new MaterialPageRoute(builder: (context) {
return new CollectPage();
}));
}
复制代码
String name ="yc";
//报错 由于name不是bool类型
if(name){
print(name);
}
复制代码
// 检查是否为空字符串
var fullName = 'doubi';
assert(fullName.isEmpty);
// 检查是否小于等于0
var hitPoints = 0;
assert(hitPoints <= 0);
// 检查是否为 null.
var unicorn;
assert(unicorn == null);
// 检查是否为 NaN.
var iMeantToDoThis = 0 / 0;
assert(iMeantToDoThis.isNaN);
复制代码
//字符串
var title = "潇湘剑雨:小杨逗比";
复制代码
main(List<String> args) {
//或者
List arr1 = [1,2,3,4];
var arr2 = [1,2,3,4];
print(list); //Output: [1, 2, 3, 4]
//Length 长度
print(list.length);
//Selecting single value 获取单个值
print(list[1]); //Outout: 2
//Adding a value 添加值到list
list.add(10);
//Removing a single isntance of value 删除单个值
list.remove(3);
//Remove at a particular position 删除指定位置的值
list.removeAt(0);
}
复制代码
var list = const [1,2,3,4];
复制代码
void test() {
var map = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
};
//Fetching the values 获取值
print(map['key1']); //Output: value1
print(map['test']); //Output: null
//Add a new value 添加值
map['key4'] = 'value4';
//Length 获取长度
print(map.length);
//Check if a key is present 检查是否存在
var containsKey = map.containsKey('value1');
print(containsKey);
var entries = map.entries;
var values = map.values;
}
复制代码
2019-06-20 17:22:39.200 4281-4329/com.hwmc.auth I/flutter: value1
2019-06-20 17:22:39.200 4281-4329/com.hwmc.auth I/flutter: null
2019-06-20 17:22:39.200 4281-4329/com.hwmc.auth I/flutter: 4
2019-06-20 17:22:39.200 4281-4329/com.hwmc.auth I/flutter: false
复制代码
var squares = new Map();
squares["a"] = 1;
squares["b"] = 2;
squares["c"] = 3.0;
squares["d"] = [1,2];
squares["e"] = "yc逗比";
print(squares['a']);
print(squares['e']);
复制代码
2019-06-20 17:27:32.841 4281-4329/com.hwmc.auth I/flutter: 1
2019-06-20 17:27:32.841 4281-4329/com.hwmc.auth I/flutter: yc逗比
复制代码
void test(){
var name = fullName('杨充', '逗比');
print(name);
}
String fullName(String firstName, String lastName) {
return "$firstName $lastName";
}
复制代码
void test(){
var name = fullName('杨充', '逗比');
print(name);
}
String fullName(String firstName, String lastName) {
return "$firstName $lastName";
}
复制代码
void test(){
var name = fullName('杨充', '逗比');
print(name);
}
fullName(String firstName, String lastName) {
return "$firstName $lastName";
}
复制代码
void test(){
out(printOutLoud);
}
out(void inner(String message)) {
inner('Message from inner function');
}
printOutLoud(String message) {
print(message.toUpperCase());
}
复制代码
复制代码
var number = 57;
if (number > 100) {
print('Large Number');
} else if (number < 100) {
print('Small Number');
} else {
print('Number is 100');
}
复制代码
int age = 60;
String status = age < 50 ? "年轻人" : "老年人";
复制代码
void test() {
for (int i = 0; i < 10; i++) {
print('$i');
}
}
复制代码
void test() {
int i = 0;
while(i < 10) {
print('$i');
i++;
}
}
复制代码
void test() {
int i = 0;
do {
print('$i');
i++;
} while (i < 10);
}
复制代码
void test() {
int age = 50;
switch(age) {
case 10:
print('Too Young.');
break;
case 20:
case 30:
print('Still Young!');
break;
case 40:
print('Getting old.');
break;
case 50:
print('You are old!');
break;
}
}
复制代码
void testA() async{
new Future<String>(() {
return "This is a doubi";
});
}
Future testB() async{
return new Future<String>(() {
return "This is a doubi";
});
}
Future<String> testC() {
return new Future<String>(() {
return "This is a doubi";
});
}
复制代码
void test() {
getTest().then((value) {
print("测试----------"+value);
}).catchError((error) {
print('测试----------Error');
});
}
Future<String> getTest() {
return new Future<String>(() {
return "This is a doubi";
});
}
//打印结果
2019-06-21 17:11:12.941 16501-16583/com.hwmc.auth I/flutter: 测试----------This is a doubi
复制代码
void test() {
getTest().then((value) {
print("测试----------"+value);
}).catchError((error) {
print('测试----------Error');
});
}
Future<String> getTest() {
return new Future<String>(() {
return "This is a doubi";
});
}
//打印结果
2019-06-21 17:18:46.896 16501-16583/com.hwmc.auth I/flutter: 测试----------Error
复制代码
void test() {
getTest().then((value) {
print("测试----------"+value);
}).catchError((error) {
print('测试----------Error');
});
}
Future<String> getTest() {
return new Future<String>.delayed(new Duration(milliseconds: 2000),() {
return "This is a doubi";
});
}
复制代码
void test() {
getTest().then((value) {
print("测试----------"+value);
}).catchError((error) {
print('测试----------Error');
});
print('测试----------逗比是这个先执行吗');
}
Future<String> getTest() {
return new Future<String>.delayed(new Duration(milliseconds: 2000),() {
return "This is a doubi";
});
}
2019-06-21 17:26:16.619 16501-16583/com.hwmc.auth I/flutter: 测试----------逗比是这个先执行吗
2019-06-21 17:26:17.176 16501-16583/com.hwmc.auth I/flutter: 测试----------This is a doubi
复制代码
void test1(){
Dog d = new Dog();
}
class Dog {
}
var cat = new Cat("逗比", 12);
class Cat {
String name;
int age;
Cat(String name, int age) {
this.name = name;
this.age = age;
}
}
复制代码
var cat = new Cat("逗比", 12);
class Cat {
String name;
int age;
Cat(String name, int age) {
this.name = name;
this.age = age;
}
}
复制代码
Map map = new Map();
map['name']= "哈巴狗";
map['age'] = 5;
Dog d = new Dog.newBorn(map);
class Dog {
String name;
int age;
Dog(this.name, this.age);
Dog.newBorn(Map json) {
name = json['name'];
age = json['age'];
}
}
复制代码
Pug p = new Pug('哈哈哈', 5);
print(p.name);
class Dog {
String name;
int age;
Dog(this.name, this.age);
Dog.newBorn() {
name = 'Doggy';
age = 0;
}
}
class Pug extends Dog {
Pug(String name, int age): super(name, age);
}
复制代码
Pug p = new Pug.small('哈哈哈');
print(p.name);
class Dog {
String name;
int age;
Dog(this.name, this.age);
Dog.newBorn() {
name = '逗比';
age = 0;
}
}
class Pug extends Dog {
Pug(String name, int age): super(name, age);
Pug.small(String name): this(name, 1);
Pug.large(String name): this(name, 3);
}
复制代码
Pug p = new Pug();
print(p.bark());
class Dog {
bark() {
print('Bow Wow');
}
}
class Pug extends Dog {
@override
bark() {
print('你真是个逗比!');
}
}
复制代码
复制代码
abstract class AbstractDog {
void eat();
void _hiddenMethod();
}
class SmallDog extends AbstractDog{
@override
void _hiddenMethod() {
}
@override
void eat() {
}
}
复制代码
void test() {
Dog d = new Dog('哈巴狗', 5);
//这个报错
print(d.name);
print(d.age);
}
复制代码
class Dog {
String _name;
int age;
Dog(this._name, this.age);
String get respectedName {
return 'Mr.$_name';
}
set respectedName(String newName) {
_name = newName;
}
Dog.newBorn() {
_name = '哈巴狗';
age = 0;
}
bark() {
print('Bow Wow');
}
_hiddenMethod() {
print('I can only be called internally!');
}
}
复制代码
void test() {
Dog.bark();
}
class Dog {
static bark() {
print('Bow Wow');
}
}
复制代码
DataHolder<String> dataHolder = new DataHolder('Some data');
print(dataHolder.getData());
dataHolder.setData('New Data');
print(dataHolder.getData());
//下面这个会报错,由于dataHolder对象在建立的时候就已经限制为String类型
dataHolder.setData(123);
print(dataHolder.getData());
class DataHolder<T> {
T data;
DataHolder(this.data);
getData() {
return data;
}
setData(data) {
this.data = data;
}
}
复制代码
Future test() async {
try {
String value = await getTest();
print("测试----------"+value);
} catch(e) {
print('测试----------Error');
}
print('测试----------逗比是这个先执行吗');
}
Future<String> getTest() {
return new Future<String>.delayed(new Duration(milliseconds: 2000),() {
return "This is a doubi";
});
}
2019-06-21 17:32:37.701 16501-16583/com.hwmc.auth I/flutter: 测试----------This is a doubi
2019-06-21 17:32:37.702 16501-16583/com.hwmc.auth I/flutter: 测试----------逗比是这个先执行吗
复制代码
void getHttp async {
// TODO ---
}
复制代码
String loadAppVersion() => "1.0.2"
复制代码
Futre<String> loadAppVersion() async => "1.0.2"
复制代码
void main() {
//调用异步方法
doAsync();
}
// 在函数上声明了 async 代表这是一个异步方法
Future<bool> doAsync() async {
try {
// 这里是一个模拟请求一个网络耗时操做
var result = await getHttp();
//请求出来的结果
return printResult(result);
} catch (e) {
print(e);
return false;
}
}
//将请求出来的结果打印出来
Future<bool> printResult(summary) {
print(summary);
}
//开始模拟网络请求 等待 5 秒返回一个字符串
getHttp() {
return new Future.delayed(Duration(seconds: 5), () => "Request Succeeded");
}
复制代码
void main() {
doAsync();
}
Future<String> doAsync() async {
return getHttp().then((r){
return printResult(r);
}).catchError((e){
print(e);
});
}
Future<String> printResult(summary) {
print(summary);
}
Future<String> getHttp() {
return new Future.delayed(Duration(seconds: 5), () => "Request Succeeded");
}
复制代码
void test1(){
divide(10, 0);
}
divide(int a, int b) {
if (b == 0) {
throw new IntegerDivisionByZeroException();
}
return a / b;
}
复制代码
void test1(){
divide(10, 0);
}
divide(int a, int b) {
if (b == 0) {
throw new Exception('逗比,不能为0的');
}
return a / b;
}
复制代码
void test1(){
try {
divide(10, 0);
} on IntegerDivisionByZeroException {
print('逗比,异常被捕获了');
}
}
divide(int a, int b) {
if (b == 0) {
throw new IntegerDivisionByZeroException();
}
return a / b;
}
复制代码
void test1(){
try {
divide(10, 0);
} on IntegerDivisionByZeroException {
print('逗比,异常被捕获了');
}
}
divide(int a, int b) {
if (b == 0) {
throw new Exception('逗比,不能为0的');
}
return a / b;
}
复制代码
void test1(){
try {
divide(10, 0);
} on IntegerDivisionByZeroException {
print('逗比,异常被捕获了');
} catch (e) {
print(e);
}
}
divide(int a, int b) {
if (b == 0) {
throw new Exception('yc other exception.');
}
return a / b;
}
复制代码
void test1(){
try {
divide(10, 0);
} on IntegerDivisionByZeroException {
print('逗比,异常被捕获了');
} catch (e) {
print(e);
}finally {
print('I will always be executed!');
}
}
divide(int a, int b) {
if (b == 0) {
throw new Exception('yc other exception.');
}
return a / b;
}
复制代码
Dog d = new Dog('哈巴狗', 12, CurrentState.sleeping);
print(d.state == CurrentState.sleeping); //Prints 'true'
enum CurrentState {
sleeping,
barking,
eating,
walking
}
class Dog {
String name;
int age;
CurrentState state;
Dog(this.name, this.age, this.state);
static bark() {
print('Bow Wow');
}
}
复制代码
复制代码
void test1() {
doSomething();
}
@toDo('seth', 'make this do something')
void doSomething() {
print('do something');
}
class toDo {
final String who;
final String what;
const toDo(this.who, this.what);
}
复制代码
String str1 = '单引号字符串';
String str2 = "双引号字符串";
print(str1); //输出:单引号字符串
print(str2); //输出:双引号字符串
复制代码
String str1 = '单引号中的"双引号"字符串';
String str2 = "双引号中的'单引号'字符串";
print("yc-str1--" + str1);
print("yc-str2--" + str2);
//单引号里面有单引号,必须在前面加反斜杠
String str3 = '单引号中的\'单引号\'';
String str4 = "双引号里面有双引号,\"双引号\"";
print("yc-str3--" + str3);
print("yc-str4--" + str4);
复制代码
2019-06-21 17:52:07.722 16501-16583/com.hwmc.auth I/flutter: yc-str1--单引号中的"双引号"字符串
2019-06-21 17:52:07.723 16501-16583/com.hwmc.auth I/flutter: yc-str2--双引号中的'单引号'字符串
2019-06-21 17:52:07.723 16501-16583/com.hwmc.auth I/flutter: yc-str3--单引号中的'单引号'
2019-06-21 17:52:07.723 16501-16583/com.hwmc.auth I/flutter: yc-str4--双引号里面有双引号,"双引号"
复制代码
//String str5 = '单引号''''单引号'; //报错了,逗比
String str6 = '单引号'' ''单引号';
String str7 = '单引号''*''单引号';
String str8 = "双引号"" ""双引号";
String str9 = "双引号""*""双引号";
//String str10 = "双引号""""双引号"; //报错了,逗比
print("yc-str6--" + str6);
print("yc-str7--" + str7);
print("yc-str8--" + str8);
print("yc-str9--" + str9);
复制代码
2019-06-21 17:56:21.847 16501-16583/com.hwmc.auth I/flutter: yc-str6--单引号 单引号
2019-06-21 17:56:21.847 16501-16583/com.hwmc.auth I/flutter: yc-str7--单引号*单引号
2019-06-21 17:56:21.847 16501-16583/com.hwmc.auth I/flutter: yc-str8--双引号 双引号
2019-06-21 17:56:21.847 16501-16583/com.hwmc.auth I/flutter: yc-str9--双引号*双引号
复制代码