08-箭头函数,匿名方法,自执行方法,闭包

1,箭头函数, 方法体只有一句。
//箭头函数
List myList = [“橘子”,”苹果”,”香蕉”];

//常规写法
myList.forEach((value){
print(value);
});

//箭头函数, 只有一句代码
myList.forEach((value)=>print(value));

// 返回一个新的数组, 要求 >2 的 数字乘于2,其他的不变
List list = [2,1,4,6];
var newList = list.map((value)=> value > 2 ? value * 2 : value);
print(newList.toList()); // [2, 1, 8, 12]

2, 匿名函数

Read More

07-方法参数

1,方法作用域, 写在 main函数之外的是全局方法, 在main函数里边的是 局部方法。
Dart语言方法中是可以嵌套方法的。
例如:
void main(){
void neiBuFn(){
print(“这是内部方法”);
}
}

2, 可选参数
//方法:可选参数, 注意是中括号[]
String printUserInfo2(String userName, [int age]){
if(age != null){
return “姓名:$userName — 年龄:$age”;
}
return “姓名:$userName — 年龄保密”;
}

3, 默认参数
// 默认参数
String printUserInfo3(String userName, [String sex = “男”, int age]){
if(age != null){
return “姓名:$userName —性别:$sex — 年龄:$age”;
}
return “姓名:$userName —性别:$sex — 年龄保密”;
}

4, 命名参数的方法
//命名参数的方法, 注意是大括号{}
String printUserInfo4(String userName,{int age, String sex = “男”}){
if(age != null){
return “姓名:$userName —性别:$sex — 年龄:$age”;
}
return “姓名:$userName —性别:$sex — 年龄保密”;
}

调用:
print(printUserInfo4(“小王”,age:20, sex:”女”)); //姓名:小王 —性别:女 — 年龄:20

Read More

06-Dart集合类型, List, Set, Map

1, List 里面常用的属性和方法:

常用属性:
length: 长度
reversed 反转
isEmpty 是否位空
isNotEmpty 是否不位空
常用方法:
add 添加
addAll 添加数组
indexOf 查找, 传入具体的值
remove 删除, 传入具体的值
removeAt 删除, 传入索引值
fillRange 修改
insert(index, value) 指定位置插入
insertAll(index, list) 指定位置插入List
toList() 其他类型转换成List
join() List转换成字符串
split() 切割
forEach() //循环,不带返回值
map() //循环,带有返回值
where() //循环, 返回符合条件的
any() //循环,只要有一个满足条件,就返回true, 否则返回false
every() //循环, 每一个都满足条件, 才返回true, 否则返回false

2,
//forEach方法:

// List myList = [“桃子”,”西瓜”,”苹果”];
// myList.forEach((value){
// print(“$value”);
// });

//map方法:
// List myList = [1,3,4];
// var newList = myList.map((value){
// return value * 2;
// });
// print(newList); //(2, 6, 8)
// print(newList.toList()); //[2, 6, 8]

Read More

04-Dart运算符

注: Dart 运算符有: 算数运算符, 关系运算符, 逻辑运算符, 赋值运算符,
另外,这里还有 条件表达式, 类型判断。

1,算数运算符: + - * / (加减乘除), / (取整), %(取余)
这里的 ~/ 取整运算符, 例如: 14
/10 = 2;

2, 关系运算符: == , !=, >, <, >=, <=
3, 逻辑运算符: !(取反) && ||
4, 赋值运算符:
基础赋值运算符, = , ??=
复合赋值运算符: +=, -=, *=, /=, %=, ~/=(取整等)
这里讲一下 ??= 这个运算符

var a = “111”;
a??=”222”;

它的意思是: 如果a 为空,那么就会将222赋值给a。

Read More

02-入口,注释,变量,常量,命名规则

1, 入口方法有两种:
main(){
}
void main(){
}

2, 注释有3中,
双斜杠 // 三个斜杠 ///
多行注释
/**
这是多行注释
*/

3, 变量的使用,跟其他语言一样。只不过多了一个var 类型,可以不预先定义变量类型,自动会类型推倒。
var str = “this is a var”;

4, 常量的修饰,有 const 和 final ,赋值之后,不能修改。
区别:final 可以开始不赋值, 只能赋值一次,而final 不近有 const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化。

const PI = 3.14159;

Read More

水印

一、 简介

1, 先看一下,我们要实现的效果:

图1

2, 第一种做法:可以让UI做一张有倾斜字体的图片,然后平铺一下图片,就ok了。

第二种做法: 根据文字,生成这种倾斜的图片,然后平铺。

上边这两种方法都可以实现,但是,第一种做法,图片是固定的,第二种做法可以根据接口返回的字符串,来动态实现水印。也许有人说了,第一种做法中的图片,也可以通过网络下载下来,然后形成水印。 毕竟条条大路通罗马,小编今天只实现第二种做法。

Read More