Flutter分类导航插件category_navigator的使用

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

Flutter分类导航插件category_navigator的使用

简介

category_navigator 是一个用于Flutter应用的UI包,提供了一个功能强大的导航栏,支持多种自定义选项。它可以帮助你创建美观且交互性强的分类导航栏,适用于各种应用场景。

特性

  • 导航栏自定义:支持颜色、阴影、形状、边框半径、轴向等自定义。
  • 项目样式自定义:可以自定义未选中和高亮项的背景颜色、文本颜色、形状、阴影、高度等。
  • 动画效果:支持默认激活项的动画过渡。
  • 图标和标签:可以单独使用图标或标签,也可以同时使用两者。

示例1 示例2

入门指南

要开始使用 category_navigator 插件,首先需要在 pubspec.yaml 文件中添加依赖:

dependencies:
  category_navigator: "<latest_release>"

请将 <latest_release> 替换为最新的版本号,可以在 Pub.dev 上查看最新版本。

使用示例

以下是一个基本的使用示例,展示了如何创建一个带有标签的导航栏:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: CategoryNavigatorExample(),
    );
  }
}

class CategoryNavigatorExample extends StatefulWidget {
  [@override](/user/override)
  _CategoryNavigatorExampleState createState() => _CategoryNavigatorExampleState();
}

class _CategoryNavigatorExampleState extends State<CategoryNavigatorExample> {
  final List<String> itemsList = const ['All', 'Android', 'ML', 'Python', 'Flutter', 'Text', 'iOS', 'Web', 'Windows'];
  final NavigatorController _navigatorController = NavigatorController();
  final ScrollController _scrollController = ScrollController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Category Navigator Example'),
      ),
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              CategoryNavigator(
                items: itemsList,
                navigatorController: _navigatorController,
                scrollController: _scrollController,
                onChange: (value) {
                  // 处理选择项变化的逻辑
                  print('Selected item: $value');
                },
                defaultActiveItem: 0, // 默认激活项索引
                navigatorBackgroundColor: Colors.blue, // 导航栏背景颜色
                margin: EdgeInsets.symmetric(horizontal: 16), // 导航栏外边距
                padding: EdgeInsets.symmetric(horizontal: 8.0, vertical: 0), // 导航栏内边距
                axis: Axis.horizontal, // 导航栏方向
                shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.all(Radius.circular(12)),
                ), // 导航栏形状
                navigatorElevation: 5, // 导航栏阴影高度
              ),
              Expanded(
                child: Center(
                  child: Text(
                    'Selected Item Index: ${_navigatorController.activeItemIndex}',
                    style: TextStyle(fontSize: 18),
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用category_navigator插件的示例代码。category_navigator是一个用于实现分类导航功能的Flutter插件,可以帮助你轻松地创建带有分类导航的UI界面。

首先,确保你已经在你的pubspec.yaml文件中添加了category_navigator依赖:

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

然后,运行flutter pub get来获取依赖。

接下来是一个简单的示例代码,展示如何使用category_navigator来创建一个分类导航界面:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Category Navigator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: CategoryNavigatorScreen(),
    );
  }
}

class CategoryNavigatorScreen extends StatefulWidget {
  @override
  _CategoryNavigatorScreenState createState() => _CategoryNavigatorScreenState();
}

class _CategoryNavigatorScreenState extends State<CategoryNavigatorScreen> {
  // 示例分类数据
  final List<Category> categories = [
    Category(
      id: '1',
      title: 'Category 1',
      icon: Icons.home,
      children: [
        SubCategory(id: '1-1', title: 'Sub Category 1-1'),
        SubCategory(id: '1-2', title: 'Sub Category 1-2'),
      ],
    ),
    Category(
      id: '2',
      title: 'Category 2',
      icon: Icons.settings,
      children: [
        SubCategory(id: '2-1', title: 'Sub Category 2-1'),
        SubCategory(id: '2-2', title: 'Sub Category 2-2'),
      ],
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Category Navigator Demo'),
      ),
      body: CategoryNavigator(
        categories: categories,
        onCategorySelected: (Category category) {
          // 当选中某个分类时执行的回调
          print('Selected Category: ${category.title}');
          // 这里可以跳转到相应的页面或执行其他逻辑
        },
        onSubCategorySelected: (SubCategory subCategory) {
          // 当选中某个子分类时执行的回调
          print('Selected Sub Category: ${subCategory.title}');
          // 这里可以跳转到相应的页面或执行其他逻辑
        },
      ),
    );
  }
}

// 分类模型
class Category {
  String id;
  String title;
  IconData icon;
  List<SubCategory> children;

  Category({required this.id, required this.title, required this.icon, required this.children});
}

// 子分类模型
class SubCategory {
  String id;
  String title;

  SubCategory({required this.id, required this.title});
}

在这个示例中,我们定义了两个模型:CategorySubCategory,分别表示分类和子分类。CategoryNavigatorScreen是主屏幕,它使用CategoryNavigator小部件来显示分类导航。

CategoryNavigator小部件接收两个重要的回调参数:

  • onCategorySelected:当选中某个分类时调用。
  • onSubCategorySelected:当选中某个子分类时调用。

你可以在这两个回调中执行相应的页面跳转或逻辑处理。

注意:这个示例假设category_navigator插件的API与上述代码一致。实际使用时,请查阅该插件的官方文档,以获取最新的API信息和示例代码。

回到顶部