flutter之dart开发入门(一)

143 阅读2分钟

「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战

2022都已经过了12分之一啦,再不学习就跟不上队伍啦,今天分享dart开发入门。

  Dart语言犹如练就了吸星大法,集百家之长,细心的同学会发现Dart中有 Java和Javascript的影子,比如在静态语法上和Java相似,尤其是类型定义、函数声明、泛型等;又在动态语法上和Javascript很像,函数特性、异步支持等;除了吸收Javascript和Java的内功之外,Dart还具有其他表现力的语法,如可选命名参数、级联运算符(..)、条件成员运算符(?.)、判空复制运算符(??)。   当然掌握比较多编程语言的同学,会看到也有Objective-C 和 Swift的影子。

1.变量声明

1.var

var a = 'hello dart';
a = 1000;//会报错

上述代码对js来说没问题, 但是dart会报错。var在dart中同样可以接收任何类型的变量,但是一旦赋值后,就会确定变量类型,更改变量值时不可更改值类型。
2.dynamic和object
在dart对象的根基类就是Object,换句话说就是dart中所有对象都是Object的子类(包括null和Function)。任意类型的值都可以赋值给Object声明的变量,同时Object类型的值可以赋值给其他任意类型的对象,而且后期可更改值类型。

dynamic t;
Object x;
t = "hi world";
x = 'Hello Object';
//下面代码没有问题
t = 1000;
x = 1000;

dynamic和Object的区别是,dynamic为声明的对象提供所有可能的组合,而Object只能使用Object的属性和方法,否则编译器会报错。

   dynamic a;
   Object b = "sd";
   main() {
       a = "";
       printLengths();
   }   

   printLengths() {
   // 正常
    print(a.length);
   // 报错 The getter 'length' is not defined for the class 'Object'
   print(b.length);
 }

但是dyanmic也有个缺点,就是提供了各种组合,在编译阶段不会报错,但在运行时会报错,无形中增加了调试难度和时间。所以dynamic要慎用。