前言

最近用flutter做了一个项目并且顺利上架,总觉得自己对flutter的编译原理、语法基础了解得还不够到位,接下来要对flutter总结一番,分享一些自己的项目经验。

一、Dart语言简介

1、学习dart官方文档
2、是一门强类型语言
3、是一个单线程的语言
4、类型注释是可选的,Dart可以推断类型
5、支持泛型类型
6、程序都必须具有顶级main()功能,该功能用作应用程序的入口点
7、接口可以有函数,类和接口是统一的,都是接口

二、Dart语言变量和常量

1、变量
 // 官方建议使用var
var aa = 'hello word' ;
dynamic aa = 'hello word' ;
String aa = 'hello word' ;

注意:
1、未初始化的变量的初始值为null
2、不具备关键字public,protected和private
3、私有方法用(_)开头,其他的标识公开方法。

2、常量
final aa = 'Bob' ;//const aa = 'Bob' ;//const在类级别,要加static constconst构造两个相同的编译时常量会产生同一个的实例var a = const ImmutablePoint(1, 1);
var b = const ImmutablePoint(1, 1);assert(identical(a, b)); // They are the same instance!

注意:
1、使用static关键字实现类范围的变量和方法( 对于常用或广泛使用的实用程序和功能,请考虑使用顶级函数而不是静态方法)。
2、final 要求变量只能初始化一次,并不要求赋的值一定是编译时常量,可以是常量也可以不是。而 const 要求在声明时初始化,并且赋值必需为编译时常量,(编译时常量:字面量(如数字、bool、字符串、List的字面量形式)、其它常量 或者 常量的算术运算,也可以是这些的组合形式(递归要求),简单地说常量就是可以在编译时确定的值。)
3、final 是惰性初始化,即在运行时第一次使用前才初始化。而 const 是在编译时就确定值了。
4、const 可以修饰变量,也可以修饰值(value)。而 final 只用来修饰变量。

3、late关键字

late的作用:
1、将您的项目迁移到零安全。

在声明初始化的不可为空变量时可以使用late 修饰符。
late String title;
void getTitle(){
title = 'Default';
print('Title is $title');
}
注意:在使用变量之前的后期确保变量稍后必须初始化。否则在使用变量时可能会遇到运行时错误。

2、延时初始化一个变量。

该变量可能不需要,并且初始化它的成本很高。
您正在初始化一个实例变量,它的初始化程序需要访问它。
// This is the program's only call to _getResult().
late String result = _getResult(); // Lazily initialized.
在上面的示例中,如果从未使用过变量,则永远不会调用成本更高的 _getResult() 函数。假设_getResult()是计算该结果的非常重要的函数。 但是,如果我们将它分配给任何变量而不延时,那么_getResult()即使我们不使用它,每次都会执行。没有 late关键字
String result = _getResult();
在上面的代码中,result从未使用过,但_getResult()依旧会被执行。使用 late关键字
late String result = _getResult();
在上面的代码中_getResult()没有被执行,因为变量result从未使用过发现了没,它是使用late修饰符声明的。

3、您可以删除许多initState/constructor调用!

以前,如果我们要创建AnimationController,则必须在initState构造函数中完成,因为this, 所需的vsync只能从方法中访问。AnimationController anim1;@override
void initState() {super.initState();anim1 = AnimationController(vsync: this, duration: Duration(seconds: 1))..forward();
}
现在,我们可以这样写:late AnimationController anim = AnimationController(vsync: ``this``, duration: Duration(seconds: 1))..forward();
这为您节省了 6 行代码您可以使用它从计算方法中获取初始值,或设置取决于动态值的任何默认值。您还可以创建构建器方法,并调用它们:late AnimationController anim1 = createAnim(seconds: 1, play: true);
late AnimationController anim2 = createAnim(seconds: 2);
late AnimationController anim3 = createAnim(seconds: 3);AnimationController createAnim({required int seconds, bool play = false}) {final c = AnimationController(vsync: this, duration: Duration(seconds: seconds));if(play) c.forward();c.addListener(() => setState((){}));return c;
}
不需要initState,也不@override使得每一行都有意义。

其他的总结后续持续更新!

END.

Flutter dart语言特点总结相关推荐

  1. Flutter Dart语言入门一篇就够了

    Dart介绍 Dart 是一种用于开发Android.IOS. Web和桌面应用的开源编程语言. 它是由Google开发的. Dart 语法类似于 C.javascript 和 java 语言. 先决 ...

  2. Dart语言基础,看完这篇文章就够了(二)

    文章内容是我在学习Flutter过程中对知识点的梳理和总结.如有不对的地方,欢迎指出. 本文承接Dart语言基础,看完这篇文章就够了(一),进一步了解Dart语法知识. 文章目录 1 流程控制语句 2 ...

  3. flutter 微信语言选择_Flutter/dart聊天实例|仿微信界面|红包|朋友圈

    FlutterChatroom项目是基于flutter+dart+image_picker等技术实现的仿微信app聊天室实战项目. 一.技术框架编码/技术:Vscode + Flutter 1.12. ...

  4. flutter基础 dart语言学习笔记

    1.JIT(Just-In-Time 动态编译) 即时编译为什么能大幅度提升性能 JIT,即Just-in-time,动态(即时)编译,边运行边编译: https://book.flutterchin ...

  5. 给Java开发者的Flutter开发基础---Dart语言

    接近半年没有在简书冒泡了.这段时间一是忙于使用云信IM开发相应项目,二是整理和收集相关Flutter的相关资料进行学习.国内关于Flutter的资料还是太过于稀少,以至于我只能去YouTube和Ude ...

  6. Flutter(一)介绍、Dart语言简介

    目录 Flutter介绍 跨平台技术简介 1. 跨平台自绘引擎 2. 高性能 Flutter 为什么选择 Dart 语言? 1.开发效率高. 2.高性能. 3.快速内存分配. 4.类型安全和空安全. ...

  7. 【Dart】Dart语言介绍和Flutter之间的关系

    Dart Dart是一种开源.面向对象.类C语言的编程语言,由Google在2011年推出.它支持强类型,可选类型和基于类的面向对象编程,同时还具有异步编程和扩展方法的能力.Dart最初是设计为Web ...

  8. Flutter 学习 - Dart 语言基础

    文章目录 前言 一.Dart 概述 Dart 重要的概念 二.变量与基本数据类型 三.函数 四.运算符 五.流程控制语句 六.异常处理 七.面向对象 构造函数 继承类 抽象类 枚举类型 八.泛型 九. ...

  9. Flutter学习之Dart语言注释

    文章目录 1.单行注释 2.多行注释 3.文档注释 高效Dart注释 注释 注释句子化 避免使用块注释 文档注释 使用 /// 注释成员和类型 优先为public的接口编写注释 考虑写一个库级别的文档 ...

  10. Flutter获取随机数 Dart语言核心基础

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 学习Dart语言,首先我们需要使用到一个语言调试工具 DartPad 在 Dart 中,dart:math 类库提供了 数学常数和函数 ...

最新文章

  1. 新年快到了,让我们一起用 Python 编织中国结吧
  2. ANSYS滑块导轨配合方法
  3. python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)
  4. matlab_simulink笔记01——模块属性的设置以及模块参数的设置
  5. Class.forName和ClassLoader
  6. Python语法糖之:列表解析、集合解析和字典解析
  7. 永和自适应官网代理系统模块V6.0.8
  8. 微博:坚决打击在政务、媒体官微下刷量控评的行为
  9. 1076. Wifi密码 (15)-PAT乙级真题
  10. loadrunner 检查点
  11. python读取文本数据--完善中
  12. 手机 — oppo手机录音放在哪个文件夹里
  13. 苹果官方发布受XcodeGhost影响最大的25个App
  14. 《Python算法教程_中文版》pdf
  15. DX11与多线程渲染
  16. JavaScript设计模式——访问者模式
  17. 卷积神经网络(三)-ZF-Net和VGG-Nets
  18. 用服务器玩安卓虚拟机,Android手机上运行linux虚拟机
  19. 金蝶mysql_金蝶财务软件中的数据库在哪里?
  20. Apache Camel学习笔记

热门文章

  1. 重庆江北鲁能旁边孩子学计算机,家长们注意!重庆多个区县中小学划片公布!这些学校民转公...
  2. vue项目动态拼接图片地址方法
  3. ONNX: export failure: Exporting the operator silu to ONNX opset version 12 is not suppo
  4. Java Spring 框架详解
  5. c语言爱心函数3D,C语言控制台打印3D爱心图案
  6. xml转json(使用工具)
  7. xml转json(dom4j + fastjson)
  8. Linux中tar的参数zxf,tar命令
  9. struts1.x 升级到struts2的几点问题
  10. [王垠系列]什么是语义学