Flutter侧边栏导航插件tuanis_sidebar的使用

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

Flutter侧边栏导航插件tuanis_sidebar的使用

TuanisSidebar 是一个专为Web设计的Flutter侧边栏插件,但也可以集成到移动应用中作为抽屉使用。它支持嵌套项目,使导航更加灵活和强大。

基本示例

以下是一个基本的使用示例:

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

void main() {
  runApp(
    const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Example(),
    ),
  );
}

class Example extends StatelessWidget {
  const Example({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Row(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: [
          TuanisSidebar(
            selectedColor: Colors.white,
            selectedTileColor: Colors.blue,
            selectedItemId: 'settings',
            sections: const [
              TuanisSidebarSection(
                title: Text(
                  'MAIN',
                  style: TextStyle(letterSpacing: 1.2),
                ),
                items: [
                  TuanisSidebarItem(
                    id: 'dashboard',
                    tile: ListTile(
                      leading: Icon(Icons.dashboard),
                      title: Text('Dashboard'),
                    ),
                    items: [
                      TuanisSidebarItem(
                        id: 'dashboard_1',
                        tile: ListTile(
                          leading: Icon(Icons.abc),
                          title: Text('Child of Dashboard'),
                        ),
                      )
                    ],
                  ),
                  TuanisSidebarItem(
                    id: 'settings',
                    tile: ListTile(
                      title: Text('Settings'),
                      leading: Icon(Icons.settings),
                    ),
                  )
                ],
              ),
              TuanisSidebarSection(
                borderColor: Color(0xffcbd5e1),
                items: [
                  TuanisSidebarItem(
                    id: 'logout',
                    tile: ListTile(
                      leading: Icon(Icons.logout),
                      title: Text('Logout'),
                    ),
                  )
                ],
              ),
            ],
          ),
          Expanded(
            child: Container(
              padding: const EdgeInsets.all(50),
              color: Colors.white,
              child: const Text('App body here'),
            ),
          )
        ],
      ),
    );
  }
}

组件说明

  • TuanisSidebar: 主组件,用于创建侧边栏。

    • selectedColor: 选中项的颜色。
    • selectedTileColor: 选中项的背景颜色。
    • selectedItemId: 当前选中的项ID。
    • sections: 侧边栏的各个部分。
  • TuanisSidebarSection: 侧边栏的一个部分,可以包含多个项目。

    • title: 部分标题。
    • items: 该部分下的项目列表。
  • TuanisSidebarItem: 侧边栏中的一个项目。

    • id: 项目的唯一标识符。
    • tile: 项目的内容,通常是一个ListTile
    • items: 子项目列表(可选)。

运行效果

在桌面端和移动端的效果如下:

Desktop Mobile
Desktop Mobile

通过上述代码和配置,您可以轻松地在Flutter应用中实现一个功能丰富且美观的侧边栏导航。根据需要调整样式和内容,以满足您的具体需求。


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

1 回复

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


当然,以下是如何在Flutter中使用tuanis_sidebar插件来实现侧边栏导航的一个简单示例。tuanis_sidebar插件允许你创建一个具有侧边栏导航的UI,非常适合在移动应用中使用。

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

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

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

接下来,创建一个Flutter项目(如果你还没有的话),然后在你的主文件(通常是main.dart)中编写以下代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Sidebar Navigation',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SidebarNavigator(
        home: HomeScreen(),
        sidebar: Sidebar(
          header: SidebarHeader(
            title: Text('Menu'),
            closeButton: IconButton(
              icon: Icon(Icons.close),
              onPressed: () {
                Navigator.pop(context);
              },
            ),
          ),
          menuItems: [
            SidebarMenuItem(
              icon: Icons.home,
              title: 'Home',
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => HomeScreen()),
                );
              },
            ),
            SidebarMenuItem(
              icon: Icons.settings,
              title: 'Settings',
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => SettingsScreen()),
                );
              },
            ),
            SidebarMenuItem(
              icon: Icons.profile,
              title: 'Profile',
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => ProfileScreen()),
                );
              },
            ),
          ],
        ),
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Screen'),
        leading: IconButton(
          icon: Icon(Icons.menu),
          onPressed: () {
            ScaffoldMessenger.of(context).showSnackbar(
              SnackBar(
                content: Text('To open sidebar, swipe from left edge'),
                duration: Duration(seconds: 2),
              ),
            );
          },
        ),
      ),
      body: Center(
        child: Text('You are on the Home Screen'),
      ),
    );
  }
}

class SettingsScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Settings Screen'),
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
      body: Center(
        child: Text('You are on the Settings Screen'),
      ),
    );
  }
}

class ProfileScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Profile Screen'),
        leading: IconButton(
          icon: Icon(Icons.arrow_back),
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
      body: Center(
        child: Text('You are on the Profile Screen'),
      ),
    );
  }
}

解释

  1. 依赖引入:在pubspec.yaml中添加了tuanis_sidebar依赖。

  2. 主应用结构

    • MyApp是根widget,它使用MaterialApp来设置应用的主题和初始页面。
    • SidebarNavigatorwidget是核心,它接受一个homewidget和一个sidebarwidget。
  3. 侧边栏

    • Sidebarwidget包含了一个头部(SidebarHeader)和一组菜单项(SidebarMenuItem)。
    • 每个菜单项都有一个图标、标题和一个点击回调。
  4. 页面

    • HomeScreenSettingsScreenProfileScreen是三个简单的页面,每个页面都有一个返回按钮(除了HomeScreen,它有一个菜单按钮来提示用户如何打开侧边栏)。

这个示例展示了如何使用tuanis_sidebar插件创建一个基本的侧边栏导航结构。你可以根据需要进一步自定义和扩展这个结构。

回到顶部