首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Flutter】Dart 数据类型 ( dynamic 数据类型 )

【Flutter】Dart 数据类型 ( dynamic 数据类型 )

作者头像
韩曙亮
发布于 2023-03-28 21:14:28
发布于 2023-03-28 21:14:28
2.5K0
举报

文章目录

Dart 语言中有 dynamic , var , Object ,

3

种数据类型 ;

一、 dynamic 数据类型


dynamic 数据类型 : dynamic 是 Drat 语言中的 动态数据类型 , 通过 dynamic 关键字定义的变量 , 在 编译时不会管定义的数据类型 , 运行时才处理变量的类型 , 根据变量赋值的类型推测当前的 dynamic 数据类型的运行时数据类型 , dynamic 变量只有在运行时才知道数据类型 ;

dynamic 变量定义 :

代码语言:javascript
复制
dynamic 变量名称 = 变量值

dynamic 变量代码示例 :

代码语言:javascript
复制
  dynamicDemo(){
    dynamic d = "CSDN";

    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);
  }

运行结果 :

代码语言:javascript
复制
String
CSDN

二、 dynamic 变量无法进行语法检查


通过 dynamic 变量可以定义任何数据类型 , 在编译时会使 Dart 语言的静态语法检查失效 ;

如 : 先定义了 dynamic 变量 , 赋值了一个字符串 , 然后调用一个不属于该字符串对象的方法 , 这里肯定出错了 , 但是静态的语法检查肯定检查不出来 , 只能在最后运行报错时知道这里出现了错误 ;

运行时出现错误 :

这 Flutter 界面中也有报错信息 :

三、 dynamic 变量运行时类型修改


dynamic 数据类型 运行时类型可以改变 , 上述的 dynamic d 类型初始化为 String 类型 , 中途将整型赋值给该变量 , 此时该变量的类型变成了 int 类型 ;

代码示例 : 先为 dynamic 变量赋值了 String 类型值 “CSDN” , 然后为 dynamic 变量赋值了 int 类型值 666 ;

代码语言:javascript
复制
  dynamicDemo(){
    dynamic d = "CSDN";

    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);

    // 调用 dynamic 变量的方法, 静态编译时无法检查其中的错误, 运行时会报错
    //d.getName();
    
    // 为 dynamic 变量赋值 int 数据
    d = 666;
    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);
  }

运行结果 :

代码语言:javascript
复制
String
CSDN
int
666

四、 完整代码示例


代码语言:javascript
复制
import 'package:flutter/material.dart';

class DartType extends StatefulWidget {
  @override
  _DartTypeState createState() => _DartTypeState();
}

class _DartTypeState extends State<DartType> {
  @override
  Widget build(BuildContext context) {

    dynamicDemo();

    return Container();
  }

  dynamicDemo(){
    dynamic d = "CSDN";

    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);

    // 调用 dynamic 变量的方法, 静态编译时无法检查其中的错误, 运行时会报错
    //d.getName();

    // 为 dynamic 变量赋值 int 数据
    d = 666;
    // 打印 dynamic 变量的运行时类型
    print(d.runtimeType);
    // 打印 dynamic 变量值
    print(d);
  }

}

运行结果 :

代码语言:javascript
复制
String
CSDN
int
666

五、 相关资源


参考资料 :

博客源码下载 :

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 文章目录
  • 一、 dynamic 数据类型
  • 二、 dynamic 变量无法进行语法检查
  • 三、 dynamic 变量运行时类型修改
  • 四、 完整代码示例
  • 五、 相关资源
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档