Flutter学习笔记1.1 Dart基础(变量 常量 命名规则
作为我自学flutter的复习笔记,后面忘记了什么知识点方便自己回看。
Dart介绍:
Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。
Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。
要学Flutter的话我们必须首先得会Dart。
官网:https://dart.dev/
Dart环境搭建:
要在我们本地开发Dart程序的话首先需要安装Dart Sdk
官方文档:https://dart.dev/get-dart
windows(推荐):
http://www.gekorm.com/dart-windows/
Mac·:
如果mac电脑没有安装brew这个工具首先第一步需要安装它: https://brew.sh/
brew tap dart-lang/dart
brew install dart
Dart 开发工具:
Dart的开发工具有很多: IntelliJ IDEA 、 WebStorm、 Atom、Vscode等
这里我们主要给大家讲解的是如果在Vscode中配置Dart。
1、找到vscode插件安装dart
2、找到vscode插件安装code runner Code Runner 可以运行我们的文件
Dart 变量:
dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒
dart中定义变量可以通过var关键字可以通过类型来申明变量
如:
var str='this is var';
String str='this is var';
int str=123;
注意: var 后就不要写类型 , 写了类型 不要var 两者都写 var a int = 5; 报错
Dart 常量: final 和 const修饰符
const
值不变 一开始就得赋值
final
可以开始不赋值 只能赋一次 ; 而final
不仅有const
的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
永远不改量的量,请使用fina
l或const
修饰它,而不是使用var或其他变量类型。
区别:final
可以开始不赋值 只能赋一次 ; 而final
不仅有const
的编译时常量的特性,最重要的它是运行时常量,并且final
是惰性初始化,即在运行时第一次使用前才初始化
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere
Dart的命名规则:
1、变量名称必须由数字、字母、下划线和美元符($)组成。
2.注意:标识符开头不能是数字
3.标识符不能是保留字和关键字。
4.变量的名字是区分大小写的如: age
和Age
是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量。
5、标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词
//var 2str='xxx'; //错误
// var if='124214'; //错误
//变量的名字是区分大小写的
var age=20;
var Age=30;
print(age);
print(Age);
var price=12;
var name=124;
基本类型
Dart中支持以下数据类型:
常用数据类型:
Numbers
(数值):
int
(整形)
double
(浮点)
Strings
(字符串)
Booleans
(布尔)
List
(数组) 在Dart中,数组是列表对象,所以大多数人只是称它们为列表
Maps
(字典) 通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次
不常用类型Runes
(了解即可)
Rune是UTF-32编码的字符串。它可以通过文字转换成符号表情或者代表特定的文字。
main() {
var clapping = '\u{1f44f}';
print(clapping);
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = new Runes(
'\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
print(new String.fromCharCodes(input));
}
Symbols(了解即可)
Symbol对象表示在Dart程序中声明的运算符或标识符。您可能永远不需要使用符号,但它们对于按名称引用标识符的API非常有用,因为缩小会更改标识符名称而不会更改标识符符号。要获取标识符的符号,请使用符号文字,它只是#后跟标识符:
在 Dart 中符号用 # 开头来表示,入门阶段不需要了解这东西,可能永远也用不上。
http://dart.goodev.org/guides/libraries/library-tour#dartmirrors---reflection
Dart数据类型:字符串类型
//1、字符串定义的几种方式
// var str1='this is str1';
// print(str1);
//换行字符串
// String str1="""
// this is str1
// this is str1
// this is str1
// """;
// print(str1);
//2、字符串的拼接
String str1='你好';
String str2='Dart';
// print("$str1 $str2");
print(str1 + str2);
print(str1 +" "+ str2);
Dart数据类型:数值类型
int
,double
void main(){
//1、int 必须是整型
int a=123;
a=45;
print(a);
//2、double 既可以是整型 也可是浮点型
double b=23.5;
b=24;
print(b);
//3、运算符
// + - * / %
var c=a+b;
print(c);
}
Dart数据类型:布尔类型
bool
值true
/false
void main() {
//1、bool
bool flag1 = true;
print(flag1);
bool flag2 = false;
print(flag2);
//2、条件判断语句
var flag = true;
if (flag) {
print('真');
} else {
print('假');
}
var a = 123;
var b = '123';
if (a == b) {
print('a=b');
} else {
print('a!=b');
}
var a = 123;
var b = 123;
if (a == b) {
print('a=b');
} else {
print('a!=b');
}
}
Dart数据类型
List(数组/集合)
void main() {
//1、第一种定义List的方式
var l1 = ["张三", 20, true];
print(l1); //[张三, 20, true]
print(l1.length); //3
print(l1[0]); //张三
print(l1[1]); //20
//2、第二种定义List的方式 指定类型
var l2 = <String>["张三", "李四"];
print(l2);
var l3 = <int>[12, 30];
print(l3);
//3、第三种定义List的方式 增加数据 ,通过[]创建的集合它的容量可以变化
var l4 = [];
print(l4);
print(l4.length);
l4.add("张三");
l4.add("李四");
l4.add(20);
print(l4);
print(l4.length);
var l5 = ["张三", 20, true];
l5.add("李四");
l5.add("zhaosi");
print(l5);
//4、第四种定义List的方式
var l6 = new List(); //在新版本的dart里面没法使用这个方法了
var l6 = List.filled(2, ""); //创建一个固定长度的集合
print(l6);
print(l6[0]);
l6[0] = "张三"; //修改集合的内容
l6[1] = "李四";
print(l6); //[张三, 李四]
l6.add("王五"); //错误写法 通过List.filled创建的集合长度是固定 没法增加数据
//通过List.filled创建的集合长度是固定
var l6 = List.filled(2, "");
print(l6.length);
l6.length = 0; //修改集合的长度 报错
var l7 = <String>["张三", "李四"];
print(l7.length); //2
l7.length = 0; //可以改变的
print(l7); //[]
var l8 = List<String>.filled(2, "");
l8[0] = "string";
// l8[0]=222;
print(l8);
}
Maps(字典)
void main() {
//第一种定义 Maps的方式
var person = {
"name": "张三",
"age": 20,
"work": ["程序员", "送外卖"]
};
print(person);
print(person["name"]);
print(person["age"]);
print(person["work"]);
// 第二种定义 Maps的方式
var p = new Map();
p["name"] = "李四";
p["age"] = 22;
p["work"] = ["程序员", "送外卖"];
print(p);
print(p["age"]);
}
Dart判断数据类型
is
关键词来判断类型
void main() {
var str = '1234';
if (str is String) {
print('是string类型');
} else if (str is int) {
print('int');
} else {
print('其他类型');
}
var str = 123;
if (str is String) {
print('是string类型');
} else if (str is int) {
print('int');
} else {
print('其他类型');
}
}