学习 Flutter 3.27+ 开发跨平台应用

基于 Dart 3.5+ 的新特性,使用单个代码库构建精美的原生应用。Impeller 渲染引擎全面取代 Skia,提供更强的性能表现。

为什么选择 Flutter?

🚀

高性能

使用原生渲染,提供60fps的流畅体验

📱

跨平台

支持 iOS、Android、Web 和桌面平台

🎨

Material 3

全新的 Material Design 3 主题,开箱即用的现代化 UI

Impeller 引擎

新一代渲染引擎,120fps 的极致流畅体验

🔥

Dart 3.5+

Records、Patterns、Switch 表达式等现代语言特性

🎮

Flutter GPU

底层图形 API,高性能游戏和图形应用支持

🌐

Web 生产就绪

Web 平台性能和兼容性大幅提升,支持更多场景

入门指南

1

安装 Flutter SDK

下载 Flutter SDK 并配置环境变量

# 使用 FVM 管理 Flutter 版本
fvm install 3.27.0
fvm use 3.27.0
fvm global 3.27.0

# 或直接下载
# https://docs.flutter.dev/release/archive

export PATH="$PATH:`pwd`/flutter/bin"
2

配置开发环境

安装 VS Code 或 Android Studio 并安装 Flutter 插件

flutter doctor -v
# 确保显示 Dart 3.5+ 版本
# 检查 Impeller 状态
flutter run -d macos --enable-impeller
3

创建第一个项目

使用命令行创建你的第一个 Flutter 应用

flutter create my_first_app
cd my_first_app
flutter run

教程系列

Dart 语言基础

学习 Dart 语言的基本语法和特性

开始学习 →

Flutter 项目结构

了解 Flutter 项目的目录结构和文件组织

开始学习 →

Widget 基础

掌握 Widget 的概念和基本用法

开始学习 →

布局组件

学习 Row、Column、Container 等布局组件

开始学习 →

输入组件

掌握 TextField、Button 等输入组件

开始学习 →

列表组件

使用 ListView 和 GridView 展示数据

开始学习 →

第三方组件

掌握 Provider、Dio、GetX 等常用组件

开始学习 →

状态管理

学习 Provider、Bloc 等状态管理方案

开始学习 →

网络请求

使用 http 包进行网络请求

开始学习 →

本地存储

使用 shared_preferences 和 sqflite

开始学习 →

代码示例

Hello World

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Hello World'),
      ),
      body: const Center(
        child: Text('Hello, Flutter!'),
      ),
    );
  }
}

计数器示例

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        useMaterial3: true,
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
      ),
      home: const CounterPage(),
    );
  }
}

class CounterPage extends StatefulWidget {
  const CounterPage({super.key});

  @override
  State createState() => _CounterPageState();
}

class _CounterPageState extends State {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('计数器'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              '你按下了按钮次数:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: const Icon(Icons.add),
      ),
    );
  }
}

学习资源

官方文档

Flutter 官方文档是最权威的学习资源

访问文档 →

Flutter 中文网

Flutter 中文社区提供中文文档和教程

访问网站 →

Pub.dev

Flutter 包仓库,查找第三方库

访问仓库 →

GitHub

Flutter 开源项目和示例代码

访问 GitHub →