Flutter导航指示插件navi_light的使用

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

Flutter导航指示插件navi_light的使用

navi_light 是一个开发者工具,旨在帮助解决常见的问题并简化重复的任务。它添加了各种警告,并提供了快速修复和重构选项。

目录

使用

安装navi_light

navi_light 是通过 custom_lint 实现的。因此,它使用 custom_lint 的安装逻辑。简而言之:

  1. 在你的 pubspec.yaml 文件中添加 navi_lightcustom_lint
dev_dependencies:
  custom_lint:
  navi_light:
  1. 在你的 analysis_options.yaml 文件中启用 custom_lint 插件:
analyzer:
  plugins:
    - custom_lint

启用/禁用lints

默认情况下,安装 navi_light 时大多数 lint 规则都会启用。你可以通过几种方式更改此设置。

禁用特定规则

如果你不喜欢 navi_light 提供的某个 lint 规则,可以在 analysis_options.yaml 中明确禁用该规则:

analyzer:
  plugins:
    - custom_lint

custom_lint:
  rules:
    # 明确禁用一个 lint 规则
    - lines_longer_than_maximum_chars: false

你也可以同时启用和禁用 lint 规则。这在你的 analysis_options.yaml 包含其他规则文件时非常有用:

include: path/to/another/analysis_options.yaml
analyzer:
  plugins:
    - custom_lint

custom_lint:
  rules:
    # 启用一个规则
    - lines_longer_than_maximum_chars
    # 禁用另一个规则
    - prefer_named_parameters: false
默认禁用所有lints

与其默认启用所有 lint 并手动禁用你选择的 lint,你可以切换到相反的逻辑:默认禁用 lint,并手动启用它们。

这可以通过在 analysis_options.yaml 中进行以下操作来实现:

analyzer:
  plugins:
    - custom_lint

custom_lint:
  # 默认强制禁用 lint 规则
  enable_all_lint_rules: false
  rules:
    # 现在可以在 "rules" 列表中启用特定规则
    - prefer_named_parameters

配置lints

一些 lint 规则具有配置选项。这些选项可以在 analysis_options.yamlpubspec.yaml 文件中的顶级键 navi_light: 下指定。

所有 lint 规则都有以下选项:

  • severity: 可以设置为 noneinfowarningerror
  • include: 仅对匹配这些正则表达式的文件进行 lint。
  • exclude: 跳过匹配这些正则表达式的文件的 lint。

示例如下:

navi_light:
  rules_exclude:
    - "test/.*\\.dart"
  rules:
    lines_longer_than_maximum_chars:
      maximum_chars: 100
      severity: info
      include:
        - "lib/.*\\.dart"
      exclude:
        - "lib/.*_temp\\.dart"
    prefer_named_parameters:
      threshold: 2
      severity: warning
    incorrect_todo_comment:
      severity: error

在终端/CI中运行navi_light

navi_light 创建的自定义 lint 规则可能不会在 dart analyze 中显示。要解决此问题,可以运行自定义命令行:custom_lint

由于你的项目应该已经安装了 custom_lint(参见安装navi_light),你应该能够运行:

dart run custom_lint

或者,你可以全局安装 custom_lint

# 为所有项目安装 custom_lint
dart pub global activate custom_lint
# 在项目中运行 custom_lint 的命令行
custom_lint

所有Lint规则

大多数 lint 规则都有一些配置选项。这些选项可以在 analysis_options.yamlpubspec.yaml 文件中指定。有关已实现的 lint 规则及其配置选项的列表,请参阅 LINTS.md

资源


navi_light_example

演示如何使用 navi_light 插件。

import 'package:flutter/material.dart';
import 'package:navi_light/navi_light.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Navi Light Example')),
        body: Center(
          child: Text(
            'Hello, Navi Light!',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter导航指示插件navi_light的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter导航指示插件navi_light的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用navi_light导航指示插件的示例代码。navi_light是一个用于在Flutter应用中实现底部导航指示器的插件。假设你已经将navi_light添加到了你的pubspec.yaml文件中:

dependencies:
  flutter:
    sdk: flutter
  navi_light: ^最新版本号  # 请替换为实际的最新版本号

然后,在pubspec.yaml所在目录下运行flutter pub get来安装依赖。

接下来,让我们创建一个简单的示例,展示如何使用navi_light

主应用文件 main.dart

import 'package:flutter/material.dart';
import 'package:navi_light/navi_light.dart';
import 'pages/home_page.dart';
import 'pages/search_page.dart';
import 'pages/profile_page.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Navi Light Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: NaviLightScaffold(
        bottomNavigationBar: NaviLightBar(
          items: [
            NaviLightItem(
              icon: Icons.home,
              title: 'Home',
            ),
            NaviLightItem(
              icon: Icons.search,
              title: 'Search',
            ),
            NaviLightItem(
              icon: Icons.person,
              title: 'Profile',
            ),
          ],
          onTabSelected: (int index) {
            setState(() {
              _selectedIndex = index;
            });
          },
        ),
        body: _buildPage(0), // 默认显示第一个页面
      ),
    );
  }

  int _selectedIndex = 0;

  Widget _buildPage(int index) {
    switch (index) {
      case 0:
        return HomePage();
      case 1:
        return SearchPage();
      case 2:
        return ProfilePage();
      default:
        return HomePage();
    }
  }
}

页面文件示例 home_page.dart

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Home Page'),
    );
  }
}

页面文件示例 search_page.dart

import 'package:flutter/material.dart';

class SearchPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Search Page'),
    );
  }
}

页面文件示例 profile_page.dart

import 'package:flutter/material.dart';

class ProfilePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Profile Page'),
    );
  }
}

解释

  1. 主应用文件 main.dart:

    • 使用MaterialApp作为应用的根容器。
    • 使用NaviLightScaffold来包含底部导航栏和页面主体。
    • NaviLightBar用于定义底部导航项,包括图标和标题。
    • onTabSelected回调用于处理导航项的点击事件,并更新当前选中的索引。
    • _buildPage方法根据当前选中的索引返回相应的页面。
  2. 页面文件:

    • 每个页面文件都是一个简单的StatelessWidget,只显示一个文本。

确保你已经正确安装了navi_light插件,并根据需要调整代码中的版本号和具体实现。这个示例提供了一个基本的使用框架,你可以根据实际需求进行扩展和修改。

回到顶部