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

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

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

特性

Image from the Package

开始使用

只需将包添加到pubspec.yaml文件中,并开始使用。

使用方法

首先创建主题和控制器,以及您希望在侧边栏中显示的项目列表。

final SimpleSidebarTheme theme = SimpleSidebarTheme()
  ..expandedShape = const BorderRadius.all(Radius.circular(8))
  ..collapsedShape = const BorderRadius.all(Radius.circular(8));

final List<SimpleSidebarItem> sidebarItems = [
  SimpleSidebarItem(onTap: () {}, title: "首页", leading: Icons.home_outlined),
  SimpleSidebarItem(onTap: () {}, title: "画廊", leading: Icons.image_outlined),
  SimpleSidebarItem(onTap: () {}, title: "用户", leading: Icons.group_outlined),
  SimpleSidebarItem(onTap: () {}, title: "额外长的菜单项名称", leading: Icons.list),
];

final List<SimpleSidebarItem> footerItems = [
  SimpleSidebarItem(onTap: () {}, title: "设置", leading: Icons.settings),
  SimpleSidebarItem(onTap: () {}, title: "退出", leading: Icons.close),
];

接下来创建一个包含这些项目的Scaffold:

Scaffold(
  backgroundColor: kcBackground,
  body: Row(
    children: [
      SimpleSidebar(
        theme: widget.theme,
        initialExpanded: true,
        initialIndex: 1,
        childrens: widget.sidebarItems,
        footerItems: widget.footerItems,
        onTap: (value) {
          setState(() {
            selected = value;
          });
          log("selected value $value");
        },
      ),
      Expanded(
        child: AnimatedOpacity(
          opacity: isVisible ? 1 : 0,
          duration: const Duration(milliseconds: 300),
          child: Container(
              margin: const EdgeInsets.all(8),
              child: const [
                Text("你好"),
                Text("你好2"),
                Text("你好3"),
                Text("你好4"),
                Text("你好5"),
                Text("你好6"),
              ][selected]),
        ),
      ),
    ],
  ),
);

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中使用simple_sidebar插件来实现侧边栏导航的示例代码。

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

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

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

接下来是示例代码,展示如何使用simple_sidebar插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Sidebar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SidebarScaffold(
        drawer: Sidebar(
          // 侧边栏头部
          header: Container(
            decoration: BoxDecoration(color: Colors.blue),
            child: Center(
              child: Text(
                'Sidebar',
                style: TextStyle(color: Colors.white, fontSize: 24),
              ),
            ),
          ),
          // 侧边栏菜单项
          items: [
            SidebarItem(
              icon: Icons.home,
              title: 'Home',
              onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => HomePage()),
                );
              },
            ),
            SidebarItem(
              icon: Icons.settings,
              title: 'Settings',
              onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (context) => SettingsPage()),
                );
              },
            ),
            // 可以添加更多菜单项
          ],
        ),
        // 主内容区域
        body: HomePage(),
        // 打开/关闭侧边栏的按钮
        options: SidebarOptions(
          sidebarPosition: SidebarPosition.left,
          header: Container(
            alignment: Alignment.centerLeft,
            child: IconButton(
              icon: Icon(Icons.menu),
              onPressed: () => SidebarScaffold.of(context).toggleSidebar(),
            ),
          ),
        ),
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home Page'),
      ),
      body: Center(
        child: Text('Welcome to the Home Page!'),
      ),
    );
  }
}

class SettingsPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Settings Page'),
      ),
      body: Center(
        child: Text('Welcome to the Settings Page!'),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个MyApp类,它是应用的根组件。
  2. 使用SidebarScaffold作为主布局,它包含了一个侧边栏(Sidebar)和一个主内容区域。
  3. 侧边栏头部是一个简单的容器,包含一个文本。
  4. 侧边栏菜单项使用SidebarItem类定义,每个菜单项都有一个图标、标题和一个点击事件处理函数。
  5. 主内容区域初始时显示HomePage
  6. 在应用栏左侧添加了一个菜单按钮,点击按钮可以打开或关闭侧边栏。

你可以根据需要添加更多的侧边栏菜单项,并根据需要自定义每个菜单项的图标和标题。希望这个示例对你有帮助!

回到顶部