Flutter侧边抽屉导航插件fan_side_drawer的使用

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

Flutter侧边抽屉导航插件fan_side_drawer的使用

fan_side_drawer 是一个为Flutter应用提供动画效果和幻想风格的侧边抽屉插件。以下是该插件的安装、使用及自定义方法。

安装

在你的Flutter项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  fan_side_drawer: any

导入 fan_side_drawer 包:

import 'package:fan_side_drawer/fan_side_drawer.dart';

使用

创建一个 FanSideDrawer 小部件,并将其放在 ScaffoldDrawer 中,传递所需的参数:

Scaffold(
  drawer: Drawer(
    width: 255,
    child: FanSideDrawer(
      menuItems: menuItems,
    ),
  ),
  appBar: AppBar(
    title: Text("Custom SideBar"),
  ),
  body: Center(
    child: Text("Welcome! Checkout my Github :)"),
  ),
);

示例代码

以下是一个完整的示例demo:

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Fan Side Drawer',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

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

  List<DrawerMenuItem> get menuItems => [
    DrawerMenuItem(title: 'Home', icon: Icons.house_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Account Details', icon: Icons.account_circle_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Profile', icon: Icons.info_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Wallet', icon: Icons.wallet_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Transactions', icon: Icons.attach_money_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Messages', icon: Icons.message_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Tickets', icon: Icons.support_agent_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Orders', icon: Icons.format_list_bulleted_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'App Settings', icon: Icons.adb_sharp, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Notifications', icon: Icons.alarm_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Subscription Plans', icon: Icons.question_answer_rounded, iconSize: 15, onMenuTapped: () {}),
    DrawerMenuItem(title: 'Shops', icon: Icons.store, iconSize: 15, onMenuTapped: () {}),
  ];

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      drawer: Drawer(
        width: 255,
        child: FanSideDrawer(
          drawerType: DrawerType.pipe,
          menuItems: menuItems,
        ),
      ),
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text("Custom SideBar"),
      ),
      body: const Center(
        child: Text("Welcome! Checkout my Github :)"),
      ),
    );
  }
}

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

1 回复

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


当然,关于如何在Flutter中使用fan_side_drawer插件来实现侧边抽屉导航,下面是一个具体的代码示例。这个示例展示了如何设置和使用fan_side_drawer来实现基本的侧边导航功能。

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

dependencies:
  flutter:
    sdk: flutter
  fan_side_drawer: ^最新版本号  # 替换为当前最新版本号

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

接下来是主代码文件main.dart的示例:

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

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
      appBar: AppBar(
        title: Text('侧边抽屉导航示例'),
        leading: IconButton(
          icon: Icon(Icons.menu),
          onPressed: () {
            _scaffoldKey.currentState?.openDrawer();
          },
        ),
      ),
      drawer: FanSideDrawer(
        header: DrawerHeader(
          decoration: BoxDecoration(
            color: Colors.blue,
          ),
          child: Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(
              '用户信息',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
        menuItems: [
          FanDrawerMenuItem(
            icon: Icons.home,
            text: '首页',
            onTap: () {
              Navigator.pop(context); // 关闭抽屉
              // 这里可以添加跳转到首页的逻辑
            },
          ),
          FanDrawerMenuItem(
            icon: Icons.settings,
            text: '设置',
            onTap: () {
              Navigator.pop(context); // 关闭抽屉
              // 这里可以添加跳转到设置页的逻辑
            },
          ),
          FanDrawerMenuItem(
            icon: Icons.exit_to_app,
            text: '退出登录',
            onTap: () {
              Navigator.pop(context); // 关闭抽屉
              // 这里可以添加退出登录的逻辑
            },
          ),
        ],
      ),
      body: Center(
        child: Text('主页面内容'),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个MyApp应用,并在其中设置了MaterialApp
  2. MyHomePage是一个有状态的Widget,它包含一个Scaffold,其中appBar用于显示应用的标题和一个菜单按钮。
  3. drawer属性使用了FanSideDrawer,它包含一个DrawerHeader和一些FanDrawerMenuItem。每个菜单项都有一个图标和文本,点击时会触发相应的回调。
  4. 在菜单项的onTap回调中,我们使用Navigator.pop(context)来关闭抽屉,并可以在此处添加页面跳转或其他逻辑。

这个示例展示了如何使用fan_side_drawer插件来创建一个简单的侧边抽屉导航菜单。根据你的需求,你可以进一步自定义菜单项的样式和行为。

回到顶部