Flutter面包屑导航插件flutter_breadcrumb的使用

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

Flutter面包屑导航插件flutter_breadcrumb的使用

pub package Twitter

Flutter Widget 可以轻松创建 Breadcrumb

面包屑或面包屑路径是一种图形控制元素,通常用作用户界面和网页中的导航辅助工具。它允许用户跟踪并保持对应用程序、文档或网站内位置的意识。

Flutter Breadcrumb

Show Cases

Show Case Wrap Behavior Scroll Behavior
showcase wrap behaivor scroll behavior

Getting Start

1. 添加依赖到 pubspec.yaml 文件中

dependencies:
  flutter_breadcrumb: ^1.0.1

2. 从命令行安装包

flutter pub get

3. 在文件中导入

import 'package:flutter_breadcrumb/flutter_breadcrumb.dart';

4. 将 BreadCrumb widget 添加到你的 widget 树中

BreadCrumb(
	items: <BreadCrumbItem>[
		//在这里添加你的 BreadCrumbItem
	],
	divider: Icon(Icons.chevron_right),
)

创建 Items

使用主构造函数或命名构造函数创建 Items

1. 主构造函数

BreadCrumb(
	items: <BreadCrumbItem>[
		 BreadCrumbItem(content: Text('Item1')),
		 BreadCrumbItem(content: Text('Item2')),
								 ...
	],
	divider: Icon(Icons.chevron_right),
)

2. 命名构造函数

BreadCrumb.builder(
	itemCount: 8,
	builder: (index) {
		return BreadCrumbItem(content: Text('Item$index'));
	},
	divider: Icon(Icons.chevron_right),
)

处理溢出

选择合适的溢出行为以确保 BreadCrumb widget 的正确显示。

1. WrapOverflow 行为

当您希望 widget 在主轴方向空间不足时自动换行时使用此行为。

BreadCrumb(
	items: <BreadCrumbItem>[
		//add your BreadCrumbItem here
	],
	divider: Icon(Icons.chevron_right),
	overflow: WrapOverflow(
		keepLastDivider: false,
		direction: Axis.horizontal,
	),
)

2. ScrollableOverflow 行为

当您希望 widget 内容在需要时可滚动时使用此行为。

BreadCrumb(
	items: <BreadCrumbItem>[
		//add your BreadCrumbItem here
	],
	divider: Icon(Icons.chevron_right),
	overflow: ScrollableOverflow(
		keepLastDivider: false,
		reverse: false,
		direction: Axis.horizontal,
	),
)

3. 自定义 Overflow 行为

您可以轻松创建自己的溢出行为。只需创建一个类并继承自 BreadCrumbOverflow 类,并重写其方法。

class CustomOverflowBehavior extends BreadCrumbOverflow{
	@override
	Widget build(BuildContext context, List<BreadCrumbItem> items, Widget divider) {
		// 实现 build 方法
	}

	@override
	bool get keepLastDivider => _keepLastDivider;

	@override
	List<Widget> widgetItems(List<BreadCrumbItem> items, Widget divider) {
		// 实现 widgetItems 方法
	}
}
  • 重写 widgetItems 方法来创建包含 itemsdivider 参数的 List<Widget>
  • 重写 build 方法来创建自定义的 widget 行为。例如,Wrap 行为使用 Wrap widget。您可以在 build 方法中使用 widgetItems 方法来创建 List<Widget> 项目。

完整示例代码

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Breadcrumb Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        accentColor: Colors.blueAccent,
        backgroundColor: Colors.white,
        scaffoldBackgroundColor: Colors.white,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Breadcrumb Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: BreadCrumb(
            items: <BreadCrumbItem>[
              BreadCrumbItem(content: Text('Home')),
              BreadCrumbItem(content: Text('Category')),
              BreadCrumbItem(content: Text('Subcategory')),
              BreadCrumbItem(content: Text('Product')),
            ],
            divider: Icon(Icons.chevron_right),
            overflow: WrapOverflow(
              keepLastDivider: false,
              direction: Axis.horizontal,
            ),
          ),
        ),
      ),
    );
  }
}

以上是 flutter_breadcrumb 插件的基本使用方法和完整示例代码。希望这些信息能帮助您更好地理解和使用这个插件。

如果您喜欢这个仓库,请给它一个星🌟 GitHub Repository


贡献和支持

欢迎贡献您的 Pull Requests。

如果喜欢这个仓库,请给它一个星🌟 GitHub Repository


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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_breadcrumb插件来实现面包屑导航的一个示例。这个插件可以帮助你在应用中实现层次结构的导航路径显示。

首先,你需要在你的pubspec.yaml文件中添加flutter_breadcrumb依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_breadcrumb: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来是一个简单的示例代码,展示了如何使用flutter_breadcrumb插件。

1. 创建一个Flutter项目

如果你还没有Flutter项目,可以通过以下命令创建一个新的Flutter项目:

flutter create breadcrumb_example

2. 修改main.dart文件

打开lib/main.dart文件,并替换其内容为以下代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Breadcrumb Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BreadcrumbScaffold(
        appBar: AppBar(
          title: Text('Breadcrumb Example'),
        ),
        breadcrumb: Breadcrumb(
          onTap: (index) {
            // 在这里处理点击事件,比如导航到相应的页面
            // 例如,可以使用Navigator.popUntil(context, ModalRoute.withName('/path'));
            print('Breadcrumb tapped at index: $index');
          },
          items: [
            BreadcrumbItem(title: 'Home'),
            BreadcrumbItem(title: 'Category'),
            BreadcrumbItem(title: 'Product'),
          ],
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'You are currently at:',
                style: TextStyle(fontSize: 20),
              ),
              SizedBox(height: 20),
              Text(
                'Product',
                style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// 自定义一个Scaffold以包含Breadcrumb
class BreadcrumbScaffold extends StatelessWidget {
  final AppBar appBar;
  final Breadcrumb breadcrumb;
  final Widget body;

  const BreadcrumbScaffold({
    Key? key,
    required this.appBar,
    required this.breadcrumb,
    required this.body,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: appBar,
      body: Padding(
        padding: const EdgeInsets.only(top: 8.0, left: 8.0, right: 8.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            breadcrumb,
            Expanded(child: body),
          ],
        ),
      ),
    );
  }
}

3. 运行应用

保存main.dart文件,并通过以下命令运行应用:

flutter run

解释

  • BreadcrumbScaffold 是一个自定义的Scaffold,它包含一个AppBar、一个Breadcrumb和一个body。
  • Breadcrumb 组件接收一个onTap回调函数,用于处理点击事件,以及一个items列表,包含面包屑的各个项目。
  • 在这个示例中,面包屑导航显示三个项目:Home、Category和Product。点击面包屑项时,会在控制台打印点击的索引。

你可以根据需要修改onTap回调中的逻辑,以实现页面之间的导航。例如,可以使用Navigator.popUntil方法返回到特定的路由。

回到顶部