Flutter新手必看:从环境配置到界面开发的完整流程

一、环境配置(Windows/macOS通用)
  1. 安装Flutter SDK

    • 下载Flutter SDK
    • 解压到指定目录(例如C:\flutter~/flutter
    • 配置环境变量:
      # 添加到PATH
      export PATH="$PATH:`pwd`/flutter/bin"
      

    • 验证安装:
      flutter doctor
      

  2. 安装IDE与插件

    • Android Studio(含Android SDK)
    • VS Code(推荐)
      • 安装扩展:FlutterDart
    • 通过flutter doctor检查依赖项并修复警告(如Android许可):
      flutter doctor --android-licenses
      

  3. 配置开发环境

    • 确保设备连接:
      flutter devices  # 查看可用设备
      


二、创建第一个Flutter项目
  1. 初始化项目

    flutter create my_first_app
    cd my_first_app
    

  2. 项目结构解析

    ├── lib/          # 核心代码
    │   └── main.dart  # 入口文件
    ├── android/      # Android平台配置
    ├── ios/          # iOS平台配置
    └── pubspec.yaml  # 依赖管理文件
    

  3. 运行默认应用

    flutter run  # 启动调试(需连接设备/模拟器)
    


三、界面开发基础
  1. 理解Widget树
    Flutter界面由嵌套Widget构成,例如:

    MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("首页")),
        body: Center(child: Text("Hello Flutter!")),
      ),
    )
    

  2. 状态管理入门

    • StatelessWidget(静态界面)
      class MyText extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return Text("不可变内容");
        }
      }
      

    • StatefulWidget(动态界面)
      class Counter extends StatefulWidget {
        @override
        _CounterState createState() => _CounterState();
      }
      
      class _CounterState extends State<Counter> {
        int count = 0;
        void increment() => setState(() => count++);
      
        @override
        Widget build(BuildContext context) {
          return Column(
            children: [
              Text("计数: $count"),
              ElevatedButton(onPressed: increment, child: Text("+1")),
            ],
          );
        }
      }
      

  3. 常用Widget速查

    类型 Widget示例 用途
    布局 Row, Column, Stack 水平/垂直/层叠排列
    基础组件 Text, Image, Icon 显示文本/图片/图标
    交互 ElevatedButton, TextField 按钮/输入框
    容器 Container, Padding 样式控制与间距

四、实战:开发一个天气应用界面
  1. 添加依赖
    编辑pubspec.yaml

    dependencies:
      http: ^0.13.5  # 网络请求
      flutter_spinkit: ^5.1.0  # 加载动画
    

    运行flutter pub get

  2. 界面代码示例

    import 'package:flutter/material.dart';
    import 'package:http/http.dart' as http;
    
    class WeatherApp extends StatefulWidget {
      @override
      _WeatherAppState createState() => _WeatherAppState();
    }
    
    class _WeatherAppState extends State<WeatherApp> {
      String temperature = "加载中...";
    
      Future<void> fetchWeather() async {
        final response = await http.get(Uri.parse("https://api.weather.com/data"));
        setState(() => temperature = "${response.body['temp']}°C");
      }
    
      @override
      void initState() {
        super.initState();
        fetchWeather();
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text("实时天气")),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Icon(Icons.wb_sunny, size: 100),
                Text("当前温度: $temperature", style: TextStyle(fontSize: 24)),
              ],
            ),
          ),
        );
      }
    }
    

  3. 热重载技巧

    • 保存代码(Ctrl+S)自动刷新界面
    • 调试控制台输入r手动触发重载

五、进阶学习资源
  1. 官方文档
  2. 实战项目
  3. 调试工具
    • Flutter Inspector(检查Widget树)
    • Performance Overlay(性能分析)

提示:遇到问题时优先查阅flutter doctor报错,90%的环境问题可通过其指引解决!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐