@TOCDart:函数
普通函数
- Dart中一切皆为对象,函数也是一个对象可以做为一个变量
- 所有函数都会返回一个值。如果没有明确指定返回值,函数体会被隐式添加 “return null;”语句
表达式:
返回值 函数名(参数1,参数2,…){
函数体
return 返回值;
}
实例:
int stringToInt(String str){
var one = int.parse(str);// String -> int
return one;
}
无返回值时,“返回值”可不写或写为“void”。“return 返回值;”省略。
匿名函数
简单说就是没有函数名的函数
表达式:
(参数1,参数2,…){
方法体…
return 返回值;
}
实例:
var objecVar = (String str){
var one = int.parse(str);// String -> int
print("结果-------$one");
};
objecVar('8')
上面例子也同时说明了Dart里面一切皆对象,函数也可以作为一个变量
闭包
一个函数对象,即使函数对象的调用在它原始作用域之外, 依然能够访问在该函数对象作用域内的变量。
理解这句话的前提是我们要知道这样两个概念:
- Dart中函数体内可以嵌套函数。
- 当变量被定义在程序不同位置时,它的作用范围是不一样的,这个作用范围就是我们所说的作用域
void main() {
conter(num j){
//变量number的作用域为整个conter函数
var number = j;
//创建一个匿名函数并且赋值给add变量,add为函数变量
var add = (num i){
print(number + i);
};
//返回匿名函数
return add;
}
//这里的add2为上面的匿名函数add,conter(2)使number赋值=2
var add2 = conter(2);
add2(2);
//输出结果为4.是因为在匿名函数add2中,它依旧能获取到其作用域内number的值2。即使add2现在不在函数conter的作用域范围之内
}
借用别人的一段话进行总结
闭包: 函数嵌套函数, 内部函数调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)。
闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
工厂构造函数
使用factory 关键字定义,并且当执行构造函数并不总是创建这个类的一个新实例的构造函数叫工厂构造函数
这里是我给工厂构造函数的定义,并不是只使用了factory关键字的构造函数就是工厂构造函数
实例:
class Logger {
final String name;
bool mute = false;
// 从命名的 _ 可以知,
// _cache 是私有属性。
static final Map<String, Logger> _cache =
<String, Logger>{};
factory Logger(String name) {
if (_cache.containsKey(name)) {
return _cache[name];
} else {
final logger = Logger._internal(name);
_cache[name] = logger;
return logger;
}
}
Logger._internal(this.name);
void log(String msg) {
if (!mute) print(msg);
}
}
安装教程
Flutter MAC安装
中文网站 https://flutterchina.club
一:下载SDK 解压到“资源库”目录 /Library
二:打开并编辑bash_profile文件
vi ~/.bash_profile
在~/.bash_profile设置环境变量如下
export PATH=/Library/flutter/bin:$PATH
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
三:退出编辑界面
按 Shift 键+分号键 输入wq 退出
四:使bash_profile文件生效
source ~/.bash_profile
五:验证安装是否成功
flutter doctor
六:自己在 ~/.bash_profile 中配置环境变量, 可是每次重启终端后配置的不生效.需要重新执行 : $source ~/.bash_profile
发现zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。
解决办法
在~/.zshrc文件最后,增加一行:
source ~/.bash_profile