在CentOS系统中,Flutter代码风格的规范主要依赖Dart官方样式规则及社区通用实践,通过工具自动化检查与人工遵循规则结合,确保代码一致性。以下是具体规范要点:
dartfmt -w .命令格式化当前目录下所有Dart/Flutter文件。always_declare_return_types、avoid_print)。在pubspec.yaml中添加依赖:dev_dependencies:
flutter_lints: ^2.0.0 # 使用最新版本
运行flutter analyze即可检查代码问题。UserProfile、LoginState、StringExtension。my_flutter_app(包名)、lib/home_page.dart(文件路径)。import 'package:dio/dio.dart' as dio;。userName、maxCount;常量用全大写加下划线,如const MAX_RETRIES = 3;。_privateMethod()、_userAge。if、for、while、switch等语句的控制体必须用大括号包裹(即使只有一行),避免“悬挂else”问题。若语句较短(如if (arg == null) return;),可省略大括号,但需保证逻辑清晰。final result = await dio.post(
'https://api.example.com/data',
data: {'key': 'value'},
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: _buildBody(), // 提取复杂Widget到方法
);
}
Widget _buildBody() {
return Column(
children: [...],
);
}
```。
//开头,注释内容为完整句子(首字母大写,句号结尾),如:// 计算用户年龄(出生日期 -> 年龄)
int calculateAge(Date dob) { ... }
/* */包裹,用于临时注释代码块(不推荐长期使用),避免嵌套块注释。///开头,用于类、方法、参数的文档说明,会被Dartdoc生成API文档。注释需简洁明了,如:/// 获取用户信息(通过ID)
///
/// [userId] 用户唯一标识
/// 返回值:User对象或null(用户不存在时)
User? getUser(String userId) { ... }
```。
?.(空值感知运算符)和??(空值默认值),避免NullPointerException,如:String? name = userName ?? 'Anonymous'; // 若userName为null,则使用'Anonymous'
dynamic类型(除非必要,如JSON解析),明确指定变量/参数类型;覆盖方法时使用@override注解,防止意外覆盖父类方法。Future类型(而非void),使用async/await简化异步代码,如:Future<void> fetchData() async {
try {
final data = await dio.get('https://api.example.com/data');
setState(() => _data = data);
} catch (e) {
print('Fetch failed: $e');
}
}
flutter test)和Widget测试(flutter test test/widget_test.dart),覆盖核心逻辑(如登录、支付),追求高代码覆盖率(关键模块≥80%)。以上规范结合了Dart官方指南与Flutter社区共识,适用于CentOS下的Flutter项目开发。通过工具自动化检查与团队协作遵守,可显著提升代码质量与可维护性。