Flutter代码质量与规范插件galactic_lints的使用

发布于 1周前 作者 phonegap100 来自 Flutter

Flutter代码质量与规范插件galactic_lints的使用

获取开始

添加此包作为devDependency

flutter pub add --dev galactic_lints

或者

dart pub add --dev galactic_lints

另外,你也可以直接将其添加到pubspec.yaml文件的devDependencies部分:

dev_dependencies:
  galactic_lints: ^0.0.1

使用

在你的analysis_options.yaml文件中添加以下行:

include: package:galactic_lints/lints.yaml

这样,你就可以轻松地启用或禁用规则。例如,你可以通过以下方式禁用prefer_single_quotes规则:

linter:
  rules:
    prefer_single_quotes: false

应用规则

错误组

  • avoid_dynamic_calls
  • avoid_slow_async_io
  • cancel_subscriptions
  • close_sinks
  • collection_methods_unrelated_type
  • comment_references
  • diagnostic_describe_all_properties
  • discarded_futures
  • no_adjacent_strings_in_list
  • prefer_relative_imports
  • throw_in_finally
  • unnecessary_statements

风格组

  • always_declare_return_types
  • avoid_catches_without_on_clauses
  • avoid_catching_errors
  • avoid_classes_with_only_static_members
  • avoid_double_and_int_checks
  • avoid_escaping_inner_quotes
  • avoid_final_parameters
  • avoid_implementing_value_types
  • avoid_js_rounded_ints
  • avoid_multiple_declarations_per_line
  • avoid_positional_boolean_parameters
  • avoid_private_typedef_functions
  • avoid_redundant_argument_values
  • avoid_returning_this
  • avoid_setters_without_getters
  • avoid_types_on_closure_parameters
  • avoid_unused_constructor_parameters
  • avoid_void_async
  • cascade_invocations
  • dangling_library_doc_comments
  • deprecated_consistency
  • implicit_call_tearoffs
  • join_return_with_assignment
  • leading_newlines_in_multiline_strings
  • lines_longer_than_80_chars
  • missing_whitespace_between_adjacent_strings
  • noop_primitive_operations
  • one_member_abstracts
  • only_throw_errors
  • parameter_assignments
  • prefer_asserts_in_initializer_lists
  • prefer_asserts_with_message
  • prefer_constructors_over_static_methods
  • prefer_final_in_for_each
  • prefer_final_locals
  • prefer_if_elements_to_conditional_expressions
  • prefer_int_literals
  • prefer_null_aware_method_calls
  • prefer_single_quotes
  • secure_pubspec_urls
  • sort_pub_dependencies
  • sort_unnamed_constructors_first
  • type_literal_in_constant_pattern
  • unawaited_futures
  • unnecessary_await_in_return
  • unnecessary_lambdas
  • unnecessary_library_directive
  • unnecessary_null_aware_operator_on_extension_on_nullable
  • unnecessary_null_checks
  • unnecessary_parenthesis
  • unnecessary_raw_strings
  • unnecessary_to_list_in_spreads
  • use_colored_box
  • use_decorated_box
  • use_enums
  • use_if_null_to_convert_nulls_to_bools
  • use_is_even_rather_than_modulo
  • use_late_for_private_fields_and_variables
  • use_named_constants
  • use_raw_strings
  • use_setters_to_change_properties
  • use_string_buffers
  • use_string_in_part_of_directives
  • use_super_parameters
  • use_test_throws_matchers

示例代码

以下是示例代码,展示了如何使用galactic_lints插件:

import 'dart:convert';

import 'package:flutter/material.dart';

import 'library.dart';

// 定义一个返回Future<void>的类型别名
typedef FutureV = Future<void>;

// 定义一个接受字符串列表的方法
void foo(List<String> lines) {}

// 定义一个接受json文本的方法
void bar(String jsonText) {
  // 将json文本解码为字符串列表
  foo(jsonDecode(jsonText) as List<String>);
}

// 主函数
void main() async {
  // 延迟零毫秒
  await FutureV.delayed(Duration.zero);
  // 执行一些惊人的操作
  doAmazingStuff();

  // 运行应用
  runApp(const MyApp());
}

// 创建一个无状态的Widget
class MyApp extends StatelessWidget {
  const MyApp({super.key});

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

// 创建一个有状态的Widget
class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

// 创建一个有状态的Widget的状态类
class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  // 增加计数器的方法
  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

更多关于Flutter代码质量与规范插件galactic_lints的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter代码质量与规范插件galactic_lints的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用galactic_lints插件来提升代码质量和规范的一个详细代码案例。

1. 添加galactic_lints依赖

首先,在你的Flutter项目的根目录下的pubspec.yaml文件中,添加galactic_lints到你的dev_dependencies中。

name: your_flutter_project
description: A new Flutter project.

# The following line prevents the package from being published accidentally.
publish_to: 'none' # Remove this line if you wish to publish this package.

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  # Add other dependencies here

dev_dependencies:
  flutter_test:
    sdk: flutter
  galactic_lints: ^latest_version  # Replace with the latest version number from pub.dev

flutter:
  uses-material-design: true

2. 安装依赖

运行以下命令来安装新添加的依赖:

flutter pub get

3. 配置analysis_options.yaml

在你的项目根目录下创建或编辑.dart-code-metrics.yaml文件(如果使用的是Dart Code Metrics插件)或者analysis_options.yaml文件来配置galactic_lints的规则。由于galactic_lints通常集成了Dart Analyzer的许多最佳实践,你可能只需要简单地包含它。

如果你使用的是analysis_options.yaml,你可以这样配置:

include: package:galactic_lints/recommended.yaml

4. 配置编辑器或IDE

确保你的编辑器或IDE(如VSCode、Android Studio)已经安装了Dart和Flutter插件,并且启用了Linting功能。

5. 运行Linting检查

你可以在命令行中运行以下命令来手动检查Linting:

dart analyze .

或者使用Flutter提供的工具:

flutter analyze

6. 自动修复问题(可选)

一些Linting问题可以通过Dart提供的自动修复功能来解决。你可以使用以下命令尝试自动修复一些问题:

dart fix --apply .

示例项目结构

最终,你的项目结构可能类似于以下形式:

your_flutter_project/
├── android/
├── ios/
├── lib/
│   └── main.dart
├── .dart-code-metrics.yaml  # 或者 analysis_options.yaml
├── pubspec.yaml
├── pubspec.lock
└── README.md

总结

通过以上步骤,你应该已经成功地在你的Flutter项目中集成了galactic_lints插件,并且配置了基本的Linting规则。这将帮助你和你的团队保持代码的一致性和高质量。如果你需要更高级的Linting规则或自定义规则,可以参考galactic_lints的官方文档来进一步配置。

回到顶部