Dart基础篇 1.常用数据类型

本文详细介绍了Dart语言中的数字类型、字符串、布尔类型、列表(List)、映射(Map)等核心数据类型,并展示了它们的实例和常见操作。涵盖了列表的创建、遍历、修改,以及Map的数据结构和操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数字类型

         num 是数字类型的父类,有两个字累 int 和 double

2.字符串

        String               

3.布尔类型

        bool

4.List集合

        List

5.map

        map


 

import 'package:flutter/material.dart';
import 'package:flutter_study/data_type.dart';

///入口函数 ,每次运行 通过main方法启动程序
void main() {
  runApp(const MyApp());
}
///StatelessWidget 无状态
///StatefulWidget 有状态

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter必备Dart基础',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(title: Text("Flutter必备Dart基础"),),
        body: Container(
          child: ListView(
            children: const [
              DataType()
            ],
          ),
        ),
      )
    );
  }
}


新建Dart类data_type

import 'package:flutter/material.dart';

///    author : Majunbao
///    github : https://github.com/MaJunBaox
///    time   : 2022/5/16 3:25 下午
///    desc   : Dart基本数据类型
class DataType extends StatefulWidget {
  const DataType({Key? key}) : super(key: key);

  @override
  State<DataType> createState() => _DataTypeState();
}

class _DataTypeState extends State<DataType> {
  @override
  Widget build(BuildContext context) {
    //数字类型
    _numType();
    //字符串类型
    _stringType();
    //布尔类型
    _boolType();
    //集合类型
    _listType();
    //Map
    _mapType();
    //扩展
    _tips();

    return Container(
      child: const Text("常用数据类型 ,请查看控制台输出"),
    );
  }
}

///数字类型
_numType(){
  num num1 = -1.0 ; //num是数字类型的父类,有两个子类 int 和 double
  num num2 = 2;
  int int1 = 3; //只能是证书
  double d1 = 1.68; //双精度 浮点数
  print("num:$num1 num:$num2 int:$int1 double:$d1");
  print(num1.abs()); //求绝对值
  print(num1.toInt()); //转换成int
  print(num1.toDouble()); //转换成Double
}

///字符串
_stringType(){
  String str1 = '字符串' ,str2 = "双引号"; //字符串定义
  String str3 = 'str1:$str1 str2:$str2'; //字符串拼接
  String str4 = 'str1:' + str1 + 'str2:' + str2; //字符串拼接
  String str5 = "常用数据类型 ,请看控制台输出";
  print(str3);
  print(str4);
  /**
   * substring 字符串截取 ,留头不留位 从0开始
   * indexOf 获取当前字符下标
   * startsWith 字符串开头是否是该文字 bool true是 false否
   * replaceAll 替换字符串 常用 替换成 京城
   * contains 字符串是否包含某个字符 bool true是 false否
   * split 裁剪字符串 ,得到的是数组
   */

  //常用方法
  print(str5.substring(2,5));//字符串截取 :数据类
  print(str5.indexOf('类型')); //获取指定字符串位置  :4
  print(str5.startsWith('常用')); // "true
  print(str5.replaceAll('常用', '经常')); // :经常数据类型 ,请看控制台输出
  print(str5.contains('输出')); //true
  print(str5.split('请')); // :[常用数据类型 ,, 看控制台输出]
}

///布尔类型,Dart是强bool类型检查 ,只有boool类型的值是true , 才被认为是true
_boolType(){
  /**
   * || 有一个为true 即 为 true
   * && 有一个为false 即为 false
   */
  print('布尔类型-请查看控制台');
  bool success = true ,fail = false;
  print(success); //true
  print(fail); //false
  print(success || fail); //true
  print(success && fail); //false
}

///List集合
_listType(){
  print("List集合-请查看控制台");
  //集合初始化的方式
  List list = [1,2,3,'集合']; //初始化是,添加元素
  print(list); //  [1, 2, 3, 集合]
  List<int> list2 = [];
  //list2 = list; 错误做法,类型转换错误
  List list3 = [];
  list3.add('list3'); //通过add方法添加元素
  list3.addAll(list);
  print(list3); // [list3, 1, 2, 3, 集合]


  List list4 = List.generate(3, (index) => index * 2);
  print(list4); //  [0, 2, 4]


  //遍历集合的方式
  for(int i = 0 ; i < list.length ; i++){
    print(list[i]); // 1 2 3 集合
  }

  list.forEach((element) {
    print(element); // 1 2 3 集合
  });

  list.remove(1);//删除值为1的元素 返回bool true成功 false失败
  list.removeAt(1); //删除下标为1的元素 并返回删除的值
  list.insert(0, "majunbao"); //下标为0的位置添加 majunbao
  print(list.sublist(0,2)); //裁剪 从0开始 ,留头去尾
  print(list.indexOf("majunbao")); //返回值为majunbao的下标

}

///map是key 与 value 相关联的对象,key和value都可以是任何类型的对象,并且key是唯一
_mapType(){
  print('map-请查看控制台');

  //Map初始化
  Map names = {'zhangsan' : '张三' , 'lisi':'李四'};
  print(names); //{zhangsan: 张三, lisi: 李四}

  Map ages = {};
  ages['xiaoming'] = 16;
  ages['xiaohong'] = 18;
  print(ages); //{xiaoming: 16, xiaohong: 18}


  //遍历
  ages.forEach((key, value) {
    print("$key : $value");
  });

  Map ages2 = ages.map((key, value){
    //迭代生成一个新Map
    return MapEntry(key, value);
  });

  print(ages2);

  for(var key in ages.keys){
    print("$key ${ages[key]}");
  }

  ages.remove("xiaohong");//删除key为小红的值
  ages.containsKey("xiaohong"); //ages集合中是否包含key为小红的 bool true包含 false不包含

}

///dynamic ,var ,Object三者的区别
///dynamic:是所有Dart对象的基础类型 ,在大多数情况下,通常不直接使用它
///通过它定义的变量会关机类型检查,这一位置dynamic x = 'hal'; x.foo();
///这段代码静态类型检查不会报错,但是运行是会crash,因为x并没有foo()方法,所以建议大家在编程时不要直接使用dynamic;
///var:是一个关键字,意思是“我不关心这里的类型是什么。”,系统会自动推断类型runtimeType;
///Object:是Dart对象的基类,当你定义:Object o=xxx;时这时候系统会认为o是个对象,你可以调用o的toString()和hashCode()方法
///因为Object提供了这些方法,但是如果你尝试调用o.foo()时,静态类型检查会进行报错;
///综上不难看出dynamic与Object的最大的区别是在静态类型检查上;
_tips(){
  print('----_tips----');
  dynamic x = 'hal';
  //x.foo(); 没有这个方法
  print(x.runtimeType);
  print(x);
  x = 123;
  print(x);
  print(x.runtimeType);
  var a = 'hal';
  //a = 123;//你可以改变 x的类型,但是无法改变 a的类型
  print(a.runtimeType);
  print(a);
  Object o1 = '11';
  print(o1.runtimeType);
  print(o1);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值