1. Flutter命令行创建项目基础操作
1.1 环境准备与前置检查
在开始创建Flutter项目前,需要确保开发环境已正确配置。打开终端执行以下命令验证环境状态:
bash复制flutter doctor
这个命令会检查所有必需的依赖项,包括:
- Flutter SDK安装状态
- Android工具链配置(Android Studio/Xcode)
- 设备连接情况
- IDE插件状态
常见问题处理:
如果出现"Android licenses not accepted"错误,需要运行:
flutter doctor --android-licenses
按提示接受所有许可证协议
1.2 标准项目创建命令
基础创建语法如下:
bash复制flutter create [选项] <项目名称>
典型示例:
bash复制flutter create my_first_app
这会生成包含以下结构的目录:
code复制my_first_app/
├── android/ # Android平台特定代码
├── ios/ # iOS平台特定代码
├── lib/ # Dart主代码目录
│ └── main.dart # 应用入口文件
├── test/ # 测试代码
└── pubspec.yaml # 项目依赖配置文件
1.3 关键创建选项详解
通过--help查看完整选项列表:
bash复制flutter create --help
常用选项组合示例:
bash复制flutter create \
--org com.example \ # 设置包名前缀
--platforms android,ios \ # 指定生成平台
--pub \ # 自动执行pub get
--sample widget.MaterialApp \ # 使用模板代码
my_custom_app
平台支持选项:
--platforms:可指定android/ios/linux/macos/windows/web--no-platforms:创建纯Dart项目
2. 高级项目配置技巧
2.1 自定义项目模板
Flutter支持通过--template指定项目类型:
bash复制flutter create --template=package my_plugin # 创建插件包
flutter create --template=module my_module # 创建可嵌入的模块
模板类型对比:
| 模板类型 | 适用场景 | 主要差异 |
|---|---|---|
| app | 标准应用 | 包含完整平台目录 |
| package | 纯Dart库 | 无平台目录 |
| module | 混合开发 | 生成.aar/.framework |
2.2 多平台配置策略
针对不同平台的特殊配置:
- Android包名修改:
bash复制flutter create --org com.yourdomain app_name
- iOS Bundle ID设置:
创建后需手动修改:
- ios/Runner.xcodeproj/project.pbxproj
- ios/Runner/Info.plist
- Web初始化:
对于已有项目添加web支持:
bash复制flutter create --platforms web .
2.3 依赖管理最佳实践
创建后立即执行的依赖操作:
- 升级过时依赖:
bash复制cd my_app && flutter pub upgrade --major-versions
- 添加常用开发依赖:
bash复制flutter pub add \
flutter_bloc \
freezed_annotation \
build_runner \
--dev
3. 项目创建后的标准工作流
3.1 初始版本控制设置
推荐的项目初始化流程:
bash复制flutter create my_app
cd my_app
git init
echo '
# 忽略文件
/build
/.dart_tool
/ios/Flutter/flutter_export_environment.sh
' > .gitignore
git add .
git commit -m "Initial commit"
3.2 开发环境配置建议
- VS Code配置:
在.vscode/settings.json中添加:
json复制{
"dart.flutterRunAdditionalArgs": ["--enable-experiment=records"],
"dart.lineLength": 120
}
- 预提交钩子设置:
在.git/hooks/pre-commit中添加:
bash复制#!/bin/sh
flutter format .
flutter analyze
3.3 持续集成准备
基础CI配置示例(GitHub Actions):
yaml复制name: Flutter CI
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- run: flutter pub get
- run: flutter test
4. 疑难问题排查指南
4.1 常见创建错误处理
- 网络问题导致失败:
bash复制export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
flutter create --retry 3 my_app
- 权限不足问题:
bash复制sudo chown -R $(whoami) /usr/local/flutter
flutter precache
4.2 平台特定问题
Android问题:
- 如果遇到Gradle错误,尝试:
bash复制cd android && ./gradlew clean
iOS问题:
- 解决CocoaPods依赖问题:
bash复制cd ios && pod install --repo-update
4.3 性能优化技巧
- 创建时跳过不需要的平台:
bash复制flutter create --no-android --no-ios web_app
- 精简初始项目结构:
bash复制flutter create --empty my_lean_app
- 使用预编译二进制:
bash复制flutter create --precompile my_fast_app
5. 进阶应用场景
5.1 企业级项目初始化
适合大型项目的创建方案:
bash复制flutter create \
--org com.company \
--platforms android,ios,web \
--no-overwrite \
--project-name company_app \
--description "Official Company App" \
--android-language kotlin \
--ios-language swift \
company_app_pro
5.2 微件开发专用配置
创建可独立运行的微件项目:
bash复制flutter create \
--template=package \
--no-pub \
--example \
my_widget_lib
关键文件结构:
code复制my_widget_lib/
├── lib/ # 微件实现代码
├── example/ # 独立示例项目
│ ├── lib/
│ └── pubspec.yaml
└── pubspec.yaml # 主配置
5.3 混合开发集成方案
为现有原生应用添加Flutter模块:
bash复制flutter create --template module --platforms android,ios flutter_module
cd flutter_module
flutter pub add flutter_boost
集成关键步骤:
- Android端:在settings.gradle中添加include_flutter.groovy
- iOS端:通过CocoaPods添加Flutter模块依赖
- 配置FlutterEngine共享模式
6. 项目维护与升级
6.1 版本迁移辅助
当需要升级Flutter版本时:
- 首先检查项目兼容性:
bash复制flutter analyze --current-package
- 创建迁移分支:
bash复制git checkout -b upgrade/flutter-3.0
flutter upgrade
- 测试各平台构建:
bash复制flutter build apk --release
flutter build ios --no-codesign
6.2 长期维护建议
- 定期清理构建缓存:
bash复制flutter clean
flutter pub cache repair
- 更新项目模板:
bash复制flutter create --force --org com.newdomain .
- 多环境配置管理:
在pubspec.yaml中添加环境变量:
yaml复制flutter:
flavors:
development:
variables: { env: dev }
production:
variables: { env: prod }
7. 生产力工具集成
7.1 常用CLI工具链
推荐开发工作流组合:
- 代码生成:
bash复制flutter pub run build_runner watch --delete-conflicting-outputs
- 国际化处理:
bash复制flutter gen-l10n --arb-dir=lib/l10n --template-arb-file=intl_en.arb
- 性能分析:
bash复制flutter run --profile --trace-startup --cache-sksl --purge-persistent-cache
7.2 自动化脚本示例
创建后自动配置的脚本(create_and_setup.sh):
bash复制#!/bin/bash
# 创建项目
flutter create $1
# 进入目录
cd $1
# 添加标准依赖
flutter pub add \
flutter_hooks \
hooks_riverpod \
go_router \
freezed \
--dev build_runner
# 初始化Git
git init
curl -o .gitignore https://raw.githubusercontent.com/flutter/flutter/master/.gitignore
# 创建基础目录结构
mkdir -p lib/src/{features,shared,core}
8. 跨平台构建策略
8.1 多平台构建配置
创建时指定多平台支持:
bash复制flutter create \
--platforms android,ios,linux,macos,windows,web \
universal_app
构建所有平台发布包:
bash复制flutter build apk --release
flutter build appbundle
flutter build ipa --export-method ad-hoc
flutter build linux --release
flutter build windows --release
flutter build web --release
8.2 条件编译技巧
在lib/main.dart中使用平台判断:
dart复制import 'dart:io' show Platform;
void main() {
if (Platform.isAndroid) {
// Android特定逻辑
} else if (Platform.isIOS) {
// iOS特定逻辑
}
}
pubspec.yaml中配置平台特定依赖:
yaml复制dependencies:
plugin:
platforms:
android:
package: plugin_android
ios:
package: plugin_ios
9. 安全与合规配置
9.1 安全基线设置
创建时添加安全配置:
- Android minSdkVersion设置:
bash复制flutter create --android-language kotlin --min-sdk 21 secure_app
- iOS隐私清单准备:
创建后手动添加ios/PrivacyInfo.xcprivacy文件
9.2 合规检查流程
推荐的安全检查步骤:
- 依赖漏洞扫描:
bash复制flutter pub outdated --mode=null-safety
flutter pub upgrade --null-safety
- 代码静态分析:
bash复制flutter analyze --fatal-infos --fatal-warnings
- 许可证检查:
bash复制flutter pub license > LICENSE_THIRD_PARTY
10. 性能优化创建选项
10.1 预编译配置
创建时启用AOT优化:
bash复制flutter create \
--precompile \
--dart-define=FLUTTER_AOT=true \
optimized_app
10.2 大小优化策略
精简型项目创建方案:
bash复制flutter create \
--no-pub \
--no-analytics \
--no-android \
--no-ios \
--template skeleton \
minimal_app
构建大小分析命令:
bash复制flutter build apk --analyze-size
flutter build appbundle --target-platform android-arm64 --analyze-size
