Flutter之Dart基础

作者: 叫我小灿吧 | 来源:发表于2021-02-20 17:20 被阅读0次

一. Hello Dart

1.1 Hello Dart

和大多数语言一样,Dart的入口函数也是Main函数,新建一个helloDart.dart的文件,添加以下代码:

main(List<String> args) {
    print('Hello Dart');
}

终端执行dart helloDart.dart,便可以看到结果。

二. 定义变量

2.1 明确声明 Explicit

变量类型 变量名称 = 变量值;

String name = '小灿';
int age = 24;
double height = 1.70;

!注意:明确声明之后的变量不可以被其他类型的变量赋值

2.2 类型推导

var/dynamic/const/final 变量名称 = 变量值;

  • var在使用时会在直接获取当前赋值的变量类型,获取之后类型就确定了下来,不可以再使用其他类型给该变量赋值
var name = '小灿';
name = 18; // 错误,在第一次赋值的时候name变量已经被确定为String型
  • dynamic,动态确定变量类型,不建议该写法,容易出现类型安全问题
dynamic name = '小灿'; // name为String类型
name = 18; // name为int类型

2.2.1 final和const(常量)

final和const都是用于定义常量的,在获得了确定的值之后都是不可以被修改的。但是二者的使用是有区别的,final是在运行时动态获取的一个常量值,而const是在编译期间就已经确定下来的常量值。

// const
const name = '小灿'; // 正确
// const date = DateTime.now(); // 错误
final date = DateTime.now(); // 正确
  • name的赋值是在编译的时候就给定了一个确定的字符串,是正确的
  • date的值是在运行时通过DateTime.now()去实时获取的,该情况下是不能用const的
  • final可以在运行时给定一个常量
  • final和const赋值之后都不可以再被改变

三.数据类型

3.1 数字类型

int age = 24;
double height = 1.70;
// 字符串转换成数字
int ageNum = int.parse('24');
double heightNum = double.parse('1.70');
// 数字转换成字符串
String ageString = ageNum.toString();
String heightString = heightNum.toString();

3.2 布尔类型

bool isGirl = true;
isGirl = false;
// Dart中不可以判断非空即真
String name = '小灿';
// if (name) {
//    
// }
// 错误的用法

3.2 字符串类型

// 单双引号都行
String s = 'Hello Dart';
String s1 = "Hello Dart";
// 多行字符串可以用三引号
String s2 = '''
Hello Dart
nihao
Happy
''';
// 字符串拼接
String name = '小灿';
int age = 24;
double height = 1.70;
print('name:${name}, age:$age, height:$height');
// 可以使用$(xxx)的方式拼接字符串,当xxx是一个标识符的时候,{}可以省略

3.2 集合

Dart有三种集合类型 List / Set / Map

  • List
List list = ['a','b','c','d']; // 这种方式是推导List的数据类型
List<int> intList = [1,2,3,4]; // 指定List的数据类型为int 
  • Set (相对于List,Set是无序且元素是不重复的)
Set set = {'a','b','c','d'}; // 这种方式是推导Set的数据类型
Set<int> intSet = {1,2,3,4}; // 指定Set的数据类型为int 
  • Map
Map map = {'name' : '小灿', 'sex' : '男'}; // 这种方式是推导Map的数据类型
Map<String, String> typeMap = {'name' : '小灿', 'sex' : '男'}; // 指定Map的数据类型

集合类型的常见操作

// 获取长度
print(list.length);
print(set.length);
print(map.length);
// 添加元素
list.add(xxx);
set.add(xxx);
// 删除元素
list.remove(xxx);
set.remove(xxx);
list.removeAt(index)// 根据下标删除
// map的基本操作
// 根据key获取具体内容
print(map['name']); // 小灿
// 获取所有内容
print('${map.entries}');// (MapEntry(name: 小灿), MapEntry(sex: 男))
// 获取所有key
print('${map.keys}'); // (name, age) 
// 获取所有key
print('${map.values}'); // (小灿, 男)
// 判断是否包含某个key
map.containKey('xxx'); // true || false
// 根据key删除元素
map.remove('xxx');

四.函数

函数在Dart中也是属于一种对象,类型为Function,因此在Dart中函数可以作为变量作为其他函数的参数或者返回值,一般我们称之为函数是一等公民

函数的定义:

返回值 函数名称 (参数列表) {
函数体
return 返回值
}

// 完整的函数定义
int sum(num num1, num num2) {
  return num1 + num2;
}
// 箭头函数语法 内容不能是语句,只能是一个表达式
sum(num num1, num num2) => num1 + num2;

参数

参数有两种类型:可选参数、必选参数

  • 可选参数
// 命名可选参数 
funcName( {int age, double height}) {

}
// 调用 命名可选参数调时参数不区分顺序
funcName();
funcName(age: 24);
funcName(height: 1.70);
funcName(age: 24, height: 1.70);

// 位置可选参数 
funcName2([int age, double height]) {

}
// 调用 位置可选参数在传参数时必须按照声明时的顺序传参
funcName2(); 
funcName2(24); 
funcName2(24, 1.70);
  • 必选参数
// 必选参数 
funcName(String name) {

}
// 调用
funcName("xxx");
  • 参数的默认值
    可选参数才可以有默认值,必选参数没有默认值
// 默认值
funcName({int age = 24, double height = 1.70}) {

}
  • 匿名函数
    有些情况下,不对函数进行命名可能会更方便,或者说更简单,我们可以使用匿名函数
List list = ['a','b','c'];
// 打印数组
// 命名函数打印
func(value) {
    print(value);
}
list.forEach(func);
//  匿名函数打印
list.forEach((value) {
    print(value);
});

相关文章

  • Flutter之基础Widget

    原文博客地址: Flutter之基础Widget Flutter和Dart系列文章 项目GitHub地址 Flut...

  • Flutter系列(2)Dart语言基础

    Flutter的开发语言是Dart语言的,这篇文章就说说Dart语言基础 一、Dart 初体验 在flutter项...

  • Dart基础(一)

    级别: ★☆☆☆☆标签:「Flutter 」「Dart」「Dart基础类型」作者: WYW审校: QiShare...

  • Flutter - 从0到完成一个App(一)

    本文主要针对有Dart和Flutter基础的小伙伴,Dart和Flutter基础,废话不多说,开撸。 文件配置 1...

  • flutter学习

    一: dart基础 二: flutter 三: vscode插件

  • Flutter之Dart基础

    一. Hello Dart 1.1 Hello Dart 和大多数语言一样,Dart的入口函数也是Main函数,新...

  • Flutter从入门到进阶

    从Dart基础语法开始,领略Flutter之美,轻松全面的掌握Flutter开发核心技术。通过学习,可以让你的Fl...

  • Flutter 的开发语言--Dart语言学习

    前言 Flutter使用的是Dart语言,我们先来了解Dart的一些基础特性,便于后面Flutter的开发。 变量...

  • Dart基础(一)

    前言:笔者最近看了Flutter相关的内容,而Flutter的基础库是由Dart编写的,所以笔者学习了关于Dart...

  • Dart基础(二)

    前言:笔者最近看了Flutter相关的内容,而Flutter的基础库是由Dart编写的,所以笔者学习了关于Dart...

网友评论

    本文标题:Flutter之Dart基础

    本文链接:https://www.haomeiwen.com/subject/joutfltx.html