Flutter面包屑导航插件simple_breadcrumbs的使用
Flutter面包屑导航插件simple_breadcrumbs的使用
A small widget to implement breadcrumbs into a flutter app
功能特性
- 可以传入路径来查看
- 自定义文本、分隔符和选中文本样式
- 设置
maxLines
- 设置
overflow
- 默认采用常见格式
使用方法
最小化需求
// 创建面包屑列表
List<Breadcrumb> breadcrumbItems = 'example/with/no/parameters'.split('/').map(
(s) => Breadcrumb(
label: s, // 每个面包屑的标签
path: s, // 每个面包屑的路径
),
).toList();
// 使用 Breadcrumbs 小部件
final breadcrumbs = Breadcrumbs(
breadcrumbs: breadcrumbItems, // 传递面包屑列表
onNavigate: (path) => _navigate(context, path), // 点击面包屑时触发的回调函数
);
完整示例
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 simple_breadcrumbs
插件。
import 'package:flutter/material.dart';
import 'package:simple_breadcrumbs/simple_breadcrumbs.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(),
darkTheme: ThemeData.dark(),
themeMode: ThemeMode.system,
home: const _BreadcrumbsView(), // 主页面
);
}
}
class _BreadcrumbsView extends StatelessWidget {
const _BreadcrumbsView();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: [
// 第一个面包屑示例
Breadcrumbs(
breadcrumbs: 'example/with/no/parameters'.split('/').map(
(s) => Breadcrumb(
label: s, // 每个面包屑的标签
path: s, // 每个面包屑的路径
),
).toList(),
onNavigate: (path) => _navigate(context, path), // 点击面包屑时触发的回调函数
),
// 第二个面包屑示例,带更多自定义参数
Breadcrumbs(
breadcrumbs: 'example/with/all/parameters'.split('/').map(
(s) => Breadcrumb(
label: s, // 每个面包屑的标签
path: s, // 每个面包屑的路径
),
).toList(),
onNavigate: (path) => _navigate(context, path), // 点击面包屑时触发的回调函数
divider: ' > ', // 自定义分隔符
textStyle: const TextStyle( // 文本样式
color: Colors.red,
),
dividerStyle: const TextStyle( // 分隔符样式
fontWeight: FontWeight.w200,
color: Colors.yellow,
fontSize: 12,
),
selectedStyle: const TextStyle( // 当前选中面包屑的样式
fontWeight: FontWeight.bold,
color: Colors.red,
),
),
],
),
);
}
// 导航到新的页面
Future<void> _navigate(BuildContext context, String path) => Navigator.push(
context,
MaterialPageRoute<void>(
builder: (BuildContext context) => Scaffold(
appBar: AppBar(title: Text(path)), // 页面标题为路径
body: Center(
child: TextButton(
child: const Text('pop'), // 按钮文字
onPressed: () => Navigator.pop(context), // 返回上一页
),
),
),
),
);
}
更多关于Flutter面包屑导航插件simple_breadcrumbs的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter面包屑导航插件simple_breadcrumbs的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
simple_breadcrumbs
是一个用于 Flutter 的面包屑导航插件,它可以帮助你在应用中实现面包屑导航功能。面包屑导航通常用于显示用户当前位置的路径,特别是在有层级结构的应用中。
安装
首先,你需要在 pubspec.yaml
文件中添加 simple_breadcrumbs
插件的依赖:
dependencies:
flutter:
sdk: flutter
simple_breadcrumbs: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
基本用法
下面是一个简单的示例,展示如何使用 simple_breadcrumbs
插件来实现面包屑导航。
import 'package:flutter/material.dart';
import 'package:simple_breadcrumbs/simple_breadcrumbs.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: BreadCrumbExample(),
);
}
}
class BreadCrumbExample extends StatefulWidget {
@override
_BreadCrumbExampleState createState() => _BreadCrumbExampleState();
}
class _BreadCrumbExampleState extends State<BreadCrumbExample> {
List<String> _breadcrumbs = ['Home'];
void _addCrumb(String crumb) {
setState(() {
_breadcrumbs.add(crumb);
});
}
void _removeCrumb() {
setState(() {
if (_breadcrumbs.length > 1) {
_breadcrumbs.removeLast();
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Breadcrumbs Example'),
),
body: Column(
children: [
SimpleBreadcrumbs(
crumbs: _breadcrumbs,
onCrumbTap: (index) {
setState(() {
_breadcrumbs = _breadcrumbs.sublist(0, index + 1);
});
},
),
Expanded(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Current Page: ${_breadcrumbs.last}'),
ElevatedButton(
onPressed: () => _addCrumb('Page ${_breadcrumbs.length}'),
child: Text('Go to Next Page'),
),
if (_breadcrumbs.length > 1)
ElevatedButton(
onPressed: _removeCrumb,
child: Text('Go Back'),
),
],
),
),
),
],
),
);
}
}
代码解释
-
Breadcrumb List:
_breadcrumbs
是一个列表,用于存储当前的面包屑路径。初始值为['Home']
。 -
Add Crumb:
_addCrumb
方法用于向面包屑列表中添加一个新的路径。 -
Remove Crumb:
_removeCrumb
方法用于移除面包屑列表中的最后一个路径。 -
SimpleBreadcrumbs Widget:
SimpleBreadcrumbs
是simple_breadcrumbs
插件提供的组件,用于显示面包屑导航。crumbs
属性用于传递面包屑列表,onCrumbTap
是一个回调函数,当用户点击某个面包屑时触发。 -
Navigation Buttons: 页面中有两个按钮,一个用于导航到下一个页面(添加新的面包屑),另一个用于返回到上一个页面(移除最后一个面包屑)。
自定义样式
你可以通过 SimpleBreadcrumbs
的 separator
、textStyle
和 crumbStyle
等属性来自定义面包屑导航的样式。
SimpleBreadcrumbs(
crumbs: _breadcrumbs,
onCrumbTap: (index) {
setState(() {
_breadcrumbs = _breadcrumbs.sublist(0, index + 1);
});
},
separator: Icon(Icons.chevron_right, size: 16),
textStyle: TextStyle(fontSize: 16, color: Colors.blue),
crumbStyle: TextStyle(fontSize: 16, color: Colors.black),
),