# 风七六本地生活服务平台代码风格规�?

## 1. 通用原则

- **代码一致�?*：所有团队成员应遵循相同的代码风格规�?
- **可读�?*：代码应易于阅读和理�?
- **可维护�?*：代码应易于维护和扩�?
- **简洁�?*：代码应简洁明了，避免冗余

## 2. Dart 代码风格

### 2.1 命名规范

- **类名**：使用大驼峰命名法（PascalCase），例如：`UserProfileScreen`
- **方法�?*：使用小驼峰命名法（camelCase），例如：`fetchUserData`
- **变量�?*：使用小驼峰命名法（camelCase），例如：`userName`
- **常量**：使用全大写加下划线，例如：`MAX_RETRY_COUNT`
- **私有成员**：使用下划线前缀，例如：`_privateMethod`

### 2.2 代码格式

- **缩进**：使�?2 个空格进行缩�?
- **行长�?*：每行代码不应超�?80 个字�?
- **空行**：在逻辑块之间使用空行分�?
- **大括�?*：使�?K&R 风格，大括号与语句在同一�?

### 2.3 注释规范

- **类注�?*：使用文档注释（///）描述类的用�?
- **方法注释**：使用文档注释（///）描述方法的功能、参数和返回�?
- **行注�?*：使�?// 注释解释复杂的代码逻辑

### 2.4 最佳实�?

- **避免使用 print 语句**：在生产代码中使用日志库
- **使用 final 关键�?*：对于不变的变量使用 final 关键�?
- **使用 super 参数**：在构造函数中使用 super 参数
- **避免�?catch �?*：至少添加注释说�?
- **正确使用 BuildContext**：避免在异步操作中使�?BuildContext

## 3. Flutter 特定规范

### 3.1 Widget 命名

- **屏幕组件**：使�?`Screen` 后缀，例如：`HomeScreen`
- **组件**：使�?`Widget` 后缀，例如：`CustomButtonWidget`
- **服务**：使�?`Service` 后缀，例如：`AuthService`

### 3.2 状态管�?

- **使用 Provider**：对于简单的状态管理使�?Provider
- **使用 GetX**：对于复杂的状态管理使�?GetX

### 3.3 布局规范

- **使用 SizedBox**：使�?SizedBox 来添加空白空�?
- **避免硬编码尺�?*：使用相对尺寸或主题定义的尺�?
- **使用 const 构造函�?*：对于不变的 Widget 使用 const 构造函�?

## 4. 检查工�?

- **使用 flutter analyze**：定期运�?flutter analyze 检查代码质�?
- **使用 flutter format**：使�?flutter format 自动格式化代�?

## 5. 版本控制规范

- **提交信息**：使用清晰的提交信息，描述修改的内容
- **分支管理**：使�?feature 分支开发新功能，使�?bugfix 分支修复 bug
- **代码审查**：所有代码修改都应经过代码审�?

## 6. 示例

### 6.1 类定义示�?

```dart
/// 用户个人资料屏幕
class UserProfileScreen extends StatefulWidget {
  const UserProfileScreen({super.key});

  @override
  State<UserProfileScreen> createState() => _UserProfileScreenState();
}

class _UserProfileScreenState extends State<UserProfileScreen> {
  final _userService = UserService();
  User? _user;
  bool _isLoading = false;

  @override
  void initState() {
    super.initState();
    _loadUserData();
  }

  Future<void> _loadUserData() async {
    setState(() {
      _isLoading = true;
    });

    try {
      final user = await _userService.getUserData();
      setState(() {
        _user = user;
      });
    } catch (e) {
      // 处理错误
      print('Failed to load user data: $e');
    } finally {
      setState(() {
        _isLoading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('个人资料'),
      ),
      body: _isLoading
          ? const Center(child: CircularProgressIndicator())
          : _user != null
              ? _buildUserProfile()
              : const Center(child: Text('加载失败')),
    );
  }

  Widget _buildUserProfile() {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text('姓名: ${_user!.name}'),
          const SizedBox(height: 8),
          Text('邮箱: ${_user!.email}'),
        ],
      ),
    );
  }
}
```

### 6.2 服务类示�?

```dart
/// 用户服务�?
class UserService {
  final _apiClient = ApiClient();

  /// 获取用户数据
  Future<User> getUserData() async {
    final response = await _apiClient.get('/user/profile');
    return User.fromJson(response);
  }

  /// 更新用户数据
  Future<void> updateUserData(User user) async {
    await _apiClient.put('/user/profile', user.toJson());
  }
}
```

## 7. 总结

遵循这些代码风格规范将有助于提高代码质量，减少错误，提高团队协作效率。团队成员应定期检查和更新这些规范，以适应项目的发展和
Flutter 的更新�
