2019-09-18: 四:Flutter之Dart第一节(变量)?

四:Flutter之Dart第一节?

1: Dart介绍和安装?

1.1: 认识Dart

Google为Flutter选择了Dart就已经是既定的事实、无论你多么想用你熟悉的语言、比如JavaScript、Java、Swift、C++等来开发Flutter至少目前是不可能的。

其实如果你对编程语言有足够的自信、Dart的学习过程甚至可以直接忽略。

  • 因为你学习N中编程语言后、你会发现它们的差异并不大
  • 无非就是语法上的差异 + 某些语言有某些特性
  • 在我初次接触Flutter的时候、并没有专门去看Dart语法、而是对于某些语法不太熟悉的时候回头去了解而已。

1.2: 安装Dart

为什么还需要安装Dart呢?
事实上在安装Flutter SDK的时候、它已经内置了Dart了、我们完全可以直接使用Flutter去进行Dart的编写并且运行.

但是、如果你想要单独学习Dart、并且运行自己的Dart代码、最好去安装一个Dart SDK。

下载Dart SDK

到Dart官网去下载对应操作系统的Dart:https://dart.dev/get-dart
无论是什么操作系统、安装方式都是两种:通过工具安装或者直接下载SDK、配置环境变量

1.2.1: 通过工具安装
  • windows可以通过Chocolatey
  • macOS可以通过Homebrew
  • 具体安装操作官网网站有详细的介绍
1.2.2: 直接下载Dart SDK、配置环境变量来安装

1.3:VSCode 配置Dart

学习Dart过程中、使用VSCode作为编辑器

  • 一方面编写代码非常方便、而且界面风格我也很喜欢
  • 另一方面我可以快速在终端看到我编写代码的效果

使用VSCode编写Dart需要安装Dart插件:我目前给这个VSCode安装了四个插件

  • Dart 和 Flutter插件是为了Flutter开发准备的
  • Atom One Dark Theme是我个人比较喜喜欢的一个主题
  • Code Runner可以点击右上角的按钮让我快速运行代码

2. Hello Dart

2.1: Hello World

接下来、就可以步入主题了、学习编程语言、从祖传的Hello World开始

在VSCode中新建一个helloWorld.dart文件、添加下面的内容

  • 新建一个文件夹、从VSCode选择文件夹


    图片.png
  • 编写代码如下:
main(List<String> args) {
print('hello world dart');
}
  • 执行右上角的按钮(当你安装了Code Runner插件以后)、会发生报错:
    [Running] dart "/Users/qxu7859/Desktop/Dart练习/helloWorld.dart"
    Dart_LoadScriptFromKernel: The binary program does not contain 'main'.
  • 先保存代码、 再运行就OK👌了

2.2: 程序的分析

接下来就是程序的分析

  • 一:Dart 语言的入口也是main函数、并且必须显示的进行定义;
  • 二:Dart的入口函数main是没有返回值的;
  • 三:传递给main的命令行参数、是通过List<String>完成的;
    1: 从字面值就可以理解List是Dart中的集合类型;
    2: 其中的每一个String都表示传递给main的一个参数;
  • 四:定义字符串的时候、可以使用单引号''或者双引号"";
  • 五:每行语句必须使用分号结尾、很多语言并不需要分号、比如Swift、javaScript;

3: 定义变量

3.1: 变量声明

明确声明变量的方式、格式如下:

  • 变量类型 变量名称 = 赋值;
示例代码:
String name = 'lishengbing';
int age = 18;
double height = 1.88;
print('name=${name}, age=${age}, height=${height}');

注意事项⚠️:定义的变量可以修改值、但是不能赋值其他类型
name = 'new value'; 正确✅
name = 18; 错误❌

3.2: 类型推导(Type Inference)

类型推导声明变量的方式、格式如下:

  • var/dynamic/const/final 变量名称 = 赋值;
3.2.1: Var的使用

var 正确使用示例:

- runtimeType用于获取变量当前的类型
var name = 'lishengbing';
name = 'make';
print('runtimeType=${name.runtimeType}') // String

--
var 错误用法:

var age = 18;
age = 'lishengbing'; // 不可以将String类型赋值给一个int类型
3.2.2: dynamic的使用

如果确实希望这样做、可以使用dynamic来声明变量:

  • 但是在开发中、通常情况下不使用dynamic、因为类型的变量会带来潜在的危险
dynamic name = 'lishengbing';
print(name.runtimeType); // String
name = 18;
print(name.runtimeType); // int
3.2.3: final & const的使用
final 和 const 都是用于定义常量的、也就是说定义之后值都不可以修改

final name = 'lishengbing';
name = 'final'; // 不可以修改❌
const age = 18;
age = 28; // 不可以修改 ❌
final 和 const 有什么区别呢?
  • const在赋值时、赋值的内容必须是在编译期间就确定下来的。
  • final在赋值时、可以动态获取、比如赋值一个函数。
String getName() {
   return 'lishengbing';
}
main(List<String> args) {
   const name = getName(); // 错误的做法,因为需要执行函数才可以获取到值
   final name = getName(); //正确的错误
}
final 和 const的小案例:
  • 首先、const是不可以赋值为DateTime.now()
  • 其次、final一旦被赋值后就有确定的结果、不会再次赋值
const time = DateTime.now(); // 错误的赋值方式
final time = DateTime.now();
print(time); // 2019-09-18 16:04:20.768250
>```

const 放在赋值语句的右边、可以共享对象、提高性能;
- 这里可以暂时先做了解、后面讲解类的常量构造函数时、在提到这个概念。
class Person {
------const Person();
}
main(List<String> args) {
 final a = const Person();
 final b = const Person();
 // const赋值在右边=true
 print('const赋值在右边=${identical(a,b)}');
 final m = Person();
 final n = Person();
 // 不用const赋值在右边=false
 print('不用const赋值在右边=${identical(m,n)}');
}
>```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容