Flutter

Flutter学习:语法

2020-07-08  本文已影响0人  Jason_hzb

字符串的差异

'Single quotes work well for string literals.'
"Single quotes work well for string literals."
'''Single quotes work well for string literals.
dsa'''
"""Single quotes work well for string literals.
dsa"""
r"Single quotes work well for string literals."
String name = 'hello';
print('$name string'); // hello string
print('${name} string'); // hello string

布尔值的转换

在js中,使用判断的时候空字符串,0,null,undefined都会被转换为false。

但是在dart中,判断条件就只能用bool值,如果是其他类型的数据,就会 抛出类型错误 。

List

dart中的List和js中的数组比较像,都可以使用..展开数组。

List list = [1, 2, 3];
List list2 = [0, ...list];

不同点:

var list;
var list2 = [0, ...?list];
var nav = [
 'Home',
 'Furniture',
 'Plants',
 if (promoActive) 'Outlet'
];
var listOfInts = [1, 2, 3];
var listOfStrings = [
 '#0',
 for (var i in listOfInts) '#$i'
];

Map和js中的对象

// var gifts = Map();
var gifts = {'first': 'partridge'};
gifts['second'] = 'partridge';

注意:

在某种意义上来说, dart的类实例和js的对象也比较像 ,可以通过.操作符访问某个键的值,毕竟声明过了嘛,哈哈。

初学dart的前端可能经常分不清 Map和类实例 ,就觉得不都是对象嘛,怎么访问不到呢?这里教大家一个方法:使用 print(变量); 如果是Map,打印出来就类似js中的对象,而如果是类实例,打印出来就是 Instance of '类' 。

其实这种困惑主要发生在使用网络请求后,其实返回的不是List就是Map,要想使用.操作符的话,就需要自己转换类型了。json转model的话可以看看这个

函数

dart函数的参数分为 positional parameters(位置参数) 和 named parameters(命名参数)。

// positional parameters(位置参数,默认必传)
bool isNoble(int atomicNumber) {
 return atomicNumber != null;
}

// named parameters(命名参数,默认可选)
bool isNoble({ int atomicNumber }) {
 return atomicNumber != null;
}

调用

// positional parameters(位置参数)
isNoble(1);

// named parameters(命名参数)
isNoble(atomicNumber: 1);

参数可选和必填:

// positional parameters(位置参数,默认必传,用[]表示可选)
bool isNoble([int atomicNumber]) {
 return atomicNumber != null;
}

// named parameters(命名参数,默认可选,使用@required表示必传)
bool isNoble({ @required int atomicNumber }) {
 return atomicNumber != null;
}

要使用required注解的话,还需要引入 package:meta/meta.dart ,否则会报错的。在flutter中, package:flutter/material.dart 已经默认引入了,所以才可以直接使用。

这个的话其实也没什么好多的了,

class User {
 String name;
 // 位置参数
 User(this.name);
 // 相当于 User([name]): this.name = name;
 
 // 命名参数的形式
 // User({this.name});
}
上一篇下一篇

猜你喜欢

热点阅读