import 'package:flutter/material.dart';
class DataType extends StatefulWidget {
@override
_DataTypeState createState() => _DataTypeState();
}
class _DataTypeState extends State<DataType> {
@override
Widget build(BuildContext context) {
_numType();
_stringType();
_boolType();
_listType();
_mapType();
_dvo();
return Container(
child: Text("数据类型请到控制台查看"),
);
}
//数字类型
void _numType(){
num num1= -1.0; //num是数字类型的父类
num num2= 2;
int int1=3; //只能是整数
double d1=3.14; //双精度
print("num:$num1 num:$num2 int: $int1 double:$d1"); //num:-1.0 num:2 int: 3 double:3.14
print(num1.abs()); //绝对值 1.0
print(num1.toInt()); //转化成int类型 -1
print(num1.toDouble()); //转化成double类型 -1.0
}
//字符串类型
void _stringType(){
String str1="张三",str2='李四';
String str3="str1是$str1,str2是$str2"; //str1是张三,str2是李四
String str4='str1是'+str1+','+'str2是'+str2; //str1是张三,str2是李四
String str5="这是一个字符串的例子,请操作";
print(str3);
print(str4);
print(str5.substring(1,3)); //开始位置,结束位置(不包含),截取字符串 结果:是一
print(str5.indexOf(",")); //-1 表示没有找到
print(str5.indexOf(new RegExp(r'字(符|串)'))); //pattern正则 结果:4
}
//bool类型
void _boolType(){
bool f1=true,f2=false;
print(f1 || f2); //true
print(f1 && f2); //false
}
//List类型
void _listType(){
List list1=[1,2,3,"字符"]; //这个默认是dynamic的类型
print(list1);
List<int> list2=[1,2,3]; //只能是Int类型
//list2=list1; //这个会报错,类型不对 type 'List<dynamic>' is not a subtype of type 'List<int>'
list2.add(3); //添加数据
list2.addAll([4,5]); //添加多个数据
print(list2); //[1, 2, 3, 3, 4, 5]
List list3=List.generate(3, (i){ //数组的生成 参数1--个数 参数2--生成的回调
return i*3;
});
print(list3); //[0, 3, 6]
//遍历
for(int i=0;i<list2.length;i++){
print(list2[i]);//123345
}
for(var o in list2){
print(o); //元素 123345
}
list2.forEach((e){ //元素
print("--$e"); //--1 --2 --3 --3 --4 --5
});
}
// Map类型
void _mapType(){
Map names={"zs":"张三",'ls':"李四"};
print(names); //{zs: 张三, ls: 李四}
Map ages={};
ages["child"]=18;
print(ages); // {child: 18}
//遍历
names.forEach((key,value){
print("Key:$key Value:$value"); //Key:zs Value:张三 Key:ls Value:李四
});
Map result=names.map((key,value){
return MapEntry(value,key); //颠倒过来
});
print(result); // {张三: zs, 李四: ls}
for(var key in names.keys){
print("Key:$key Value:${names[key]}"); //Key:zs Value:张三 Key:ls Value:李四
}
}
//dynamic var Object区别
void _dvo(){
dynamic d="123"; //动态类型,编译时候不操作,运行时根据值赋予类型,一般不主动用它
print(d.runtimeType); //String
d=123;
print("${d.runtimeType} $d"); //可以赋值不同的类型,类型会改变 int 123
var v="234"; //编译时候就确定类型,根据值类型自动赋予
// v=123; 不可赋值不同类型,会报错
v="567"; //相同类型可以
print(v.runtimeType); //String
print(v); //567
Object o="123"; //有编译时候的静态类型检查
print(o.runtimeType); //String
o=123; //也可以赋值
print(o.runtimeType); //int
}
}