Flutter(Dart)速查表

对一些基本的 Dart 语言结构进行了描述

目录

以下是 Flutter(Dart)的速查表,包含最常用命令和语言结构:

开发者演奏长笛和投掷飞镖 上图是由 Flux 1 dev 模型生成的 AI 图像,展示了开发者演奏长笛和投掷飞镖的场景。

Flutter CLI 命令

创建一个新的 Flutter 项目:

flutter create <project_name>

运行 Flutter 应用:

flutter run

构建发布版 APK:

flutter build apk

分析 Dart 代码:

flutter analyze

运行测试:

flutter test

获取包:

flutter pub get

升级 Flutter:

flutter upgrade

检查 Flutter 安装:

flutter doctor

Dart 语言结构

变量和数据类型:

int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Can be any type';
final constantVar = 'Cannot be reassigned';
const compiletimeConstant = 'Compile-time constant';

空安全:

String? nullableString;
String nonNullableString = 'Hello';

函数:

void simplePrint() {
  print('Hello');
}

int add(int a, int b) => a + b;

void namedParams({required String name, int? age}) {
  // 函数体
}

void optionalParams(String name, [int? age]) {
  // 函数体
}

控制流:

if (condition) {
  // 代码
} else if (anotherCondition) {
  // 代码
} else {
  // 代码
}

for (var i = 0; i < 5; i++) {
  // 代码
}

while (condition) {
  // 代码
}

switch (variable) {
  case value1:
    // 代码
    break;
  default:
    // 代码
}

列表和映射:

List<int> numbers = [1, 2, 3];
Map<String, int> ages = {'Alice': 30, 'Bob': 25};

类:

class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void sayHello() {
    print('Hello, I am $name');
  }
}

异步编程:

Future<void> fetchData() async {
  try {
    var result = await someAsyncOperation();
    print(result);
  } catch (e) {
    print('Error: $e');
  }
}

流:

Stream<int> countStream(int max) async* {
  for (int i = 0; i < max; i++) {
    yield i;
  }
}

错误处理:

try {
  // 可能抛出异常的代码
} on SpecificException {
  // 处理特定异常
} catch (e) {
  // 处理任何异常
} finally {
  // 总是执行
}

这份速查表涵盖了 Flutter 最重要的命令和 Dart 语言结构,为 Flutter 开发者提供快速参考。

Flutter / Dart 中的空安全

在 Flutter 应用中处理 Dart 的空安全对于编写健壮且无错误的代码至关重要。 以下是如何处理空安全的简单指南:

声明变量

非空变量:

int age = 30;
String name = 'John';

可空变量:

int? nullableAge;
String? nullableName;

与可空类型一起工作

空感知运算符:

  1. 空感知访问运算符(?.)
String? name;
print(name?.length); // 安全地访问长度,如果 name 不为 null
  1. 空合并运算符(??)
String? name;
String displayName = name ?? 'Guest';
  1. 空感知赋值运算符(??=)
String? name;
name ??= 'John'; // 如果 name 为 null,赋值 'John'

空断言运算符 (!) 谨慎使用此运算符,因为如果值为 null,可能会导致运行时错误:

String? nullableName = 'John';
String nonNullableName = nullableName!;

流分析

Dart 的流分析有助于确定何时可以安全使用可空变量:

String? getName() => 'John';

void printName() {
  String? name = getName();
  if (name != null) {
    print(name.length); // 此处可以安全使用 name
  }
}

晚期变量

使用 late 用于在声明后初始化的非空变量:

late String lateInitializedName;
void initializeName() {
  lateInitializedName = 'John';
}

处理可空参数

void greet(String name, {String? title}) {
  if (title != null) {
    print('Hello, $title $name');
  } else {
    print('Hello, $name');
  }
}

与集合一起工作

可空列表:

List<String>? nullableList;
List<String?> listOfNullableStrings = ['Hello', null, 'World'];

过滤空值:

List<String?> mixedList = ['a', null, 'b', null, 'c'];
List<String> nonNullList = mixedList.whereType<String>().toList();

通过遵循这些实践,您可以有效地在 Dart 和 Flutter 应用程序中处理空安全,减少与空值相关的错误风险,并提高整体代码质量。

有用的链接