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)}');
}
>```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容