Dart数据类型
取余,取整
void main(){
int a=15;
int b=2;
print(a%b); //取余 1
print(a~/b); //取整 7
print(a/b); // 7.5
}
import 'package:flutter/cupertino.dart';
/// 5.常用数据类型
class DataType extends StatefulWidget {
@override
_DataTypeState createState() => _DataTypeState();
}
class _DataTypeState extends State<DataType> {
@override
Widget build(BuildContext context) {
// _numType();
// _stringType();
// _boolType();
// _listType();
return Container(
child: Text("常用数据类型,请查看控制器"),
);
}
/// 1.数字类型
void _numType() {
num num1 = -1.0; //是数字类型的父类
num num2 = 2;//是数字类型的父类
int int1 = 3; //只能是证书
double double1 = 1.68;//双精度
print("num:$num1\n num2:$num2\n int1:$int1\n double1:$double1");
//求绝对值
print(num1.abs());
//转换成int
print(num1.toInt());
//转换成double
print(num1.toDouble());
}
/// 2.字符串
_stringType() {
String str1 = "双引号字符串";
String str2 = '单引号字符串';
String str3 = 'str1和str2: $str1 $str2';
String str4 = 'str1:' +str1+ 'str2:'+str2;
print("str3---:$str3\n str4---:$str4");
//常用方法
String str5 = "常用数据类型,请查看控制台输出";
//字符串截取
print(str5.substring(0,6));
//获取指定字符串位置
print(str5.indexOf('类型'));
// startsWith replaceAll contains split
}
///3.布尔类型
_boolType() {
bool success = true, fail = false;
print(success);
print(success || fail);//true
print(success && fail);//false
}
/// 4.集合
_listType() {
print("----------listType-----------");
//集合的初始化方式
List list1 = [1,2,3,4,'集合'];
print(list1);
//集合泛型
List<int> list2 = [];
// list2 = list1; 错误做法,类型转换错误 type 'List<dynamic>' is not a subtype of type 'List<int>'
List list3 = [];
//通过add方法添加元素
list3.add("addList3");
list3.addAll(list1);
print(list3);
//生成函数
List list4 = List.generate(5,(index) => index *2);
print(list4);
/// 遍历集合的方式
for(int i=0; i<list1.length;i++){
print(list1[i]);
}
for(var i in list1){
print(i);
}
list1.forEach((value){
print(value);
});
}
/// 5. map 是将key和value相关联的对象
_listMap() {
print("-------_mapType--------");
Map names = {"allison":"英文名"};
print(names);
Map ages = {};
ages["rose"] = 16;
ages["lily"] = 18;
print(ages);
//map遍历1
ages.forEach((k,v){
print('---$k, ----$v');
});
//map遍历2
Map ages2 = ages.map((k,v){
return MapEntry(v, k);
});
print(ages2);
//map遍历3
for(var key in ages.keys) {
print('$key ${ages[key]}');
}
}
StatefulWidget
StatefulWidget生命周期
Tips:无状态的widget的生命周期方只有 createElement 和 build两个生命周期方法
1. 初始化时期 createState 和 initState
2. 更新时期 didChangeDependencies 、build 、didUpdateWidget
3. 销毁时期 deactivate 和 dispose
监听生命周期
import 'package:flutter/material.dart';
///如何获取flutter应用的生命周期
///WidgetsBindingObserver 是一个widgets绑定观察器,通过它我们可以监听应用的生命周期
class AppLifeCycle extends StatefulWidget {
@override
_AppLifeCycleState createState() => _AppLifeCycleState();
}
class _AppLifeCycleState extends State<AppLifeCycle> with WidgetsBindingObserver {
///添加监听器
@override
void initState() {
WidgetsBinding.instance.addObserver(this);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('flutter应用生命周期'),
),
body: Container(
child: Text('flutter应用生命周期'),
),
);
}
/// 生命周期发生变化时,会调用该方法
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
print('state = $state');
if(state == AppLifecycleState.paused) {
print('APP进入后台');
} else if (state == AppLifecycleState.resumed) {
print('APP进入前台');
} else if (state == AppLifecycleState.inactive) {
// print('应用处于非激活状态,并且未接收用户时调用,比如:来电话');
}
}
///移除监听器
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
}
类方法和实例方法
///// 实例方法
// void xxx() {}
// /// 包私有实例方法
// void _xxx() {}
// /// 类方法
// static void xxx() {}
// /// 包私有类方法
// static void _xxx() {}