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

举报
韩曙亮 发表于 2022/01/11 00:26:58 2022/01/11
【摘要】 文章目录 一、 dynamic 数据类型二、 dynamic 变量无法进行语法检查三、 dynamic 变量运行时类型修改四、 完整代码示例五、 相关资源 Dart 语言中有 dynam...


Dart 语言中有 dynamic , var , Object , 3 3 3 种数据类型 ;





一、 dynamic 数据类型



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


dynamic 变量定义 :

dynamic 变量名称 = 变量值

  
 
  • 1

dynamic 变量代码示例 :

  dynamicDemo(){
    dynamic d = "CSDN";

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行结果 :

String
CSDN

  
 
  • 1
  • 2




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



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

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

在这里插入图片描述

运行时出现错误 :

在这里插入图片描述

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

在这里插入图片描述





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



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


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

  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);
  }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

运行结果 :

String
CSDN
int
666

  
 
  • 1
  • 2
  • 3
  • 4




四、 完整代码示例



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);
  }

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

运行结果 :

String
CSDN
int
666

  
 
  • 1
  • 2
  • 3
  • 4




五、 相关资源



参考资料 :


博客源码下载 :

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/113723207

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。