Flutter模态侧边栏插件modal_side_sheet的使用

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

Flutter模态侧边栏插件modal_side_sheet的使用

Side Sheet

modal_side_sheet 是一个可以在Flutter项目中使用的Material风格侧边栏组件。更多关于侧边栏的信息可以参见Material.io

平台支持

平台 支持情况
Android ✔️
iOS ✔️
MacOS ✔️
Web ✔️
Linux ✔️
Windows ✔️

开始使用

这个包提供了两种类型的侧边栏,分别是标准侧边栏(Standard side sheet)模态侧边栏(Modal side sheet)

模态侧边栏 Modal Side Sheet

模态侧边栏在显示内容时会阻止用户与屏幕其余部分的交互。根据Google的Material Design推荐,这种侧边栏主要用于移动设备上。更多详情请参阅Modal Side Sheet

使用示例

通过调用showModalSideSheet()函数,你就可以在Flutter项目中使用模态侧边栏了。下面是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Material App',
      home: Home(),
    );
  }
}

class Home extends StatefulWidget {
  const Home({
    Key? key,
  }) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool show = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Side Sheet Demo'),
      ),
      body: Builder(
        builder: (context) {
          return BodyWithSideSheet(
            show: show,
            body: Container(
              color: Color(0xffececec),
              child: Column(
                mainAxisSize: MainAxisSize.min,
                mainAxisAlignment: MainAxisAlignment.start,
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Text("Modal Side sheet Demo"),
                  ElevatedButton(
                      onPressed: () {
                        setState(() {
                          show = !show;
                        });
                      },
                      child: Text("Show Standard Side Sheet")),
                  ElevatedButton(
                      onPressed: () {
                        showModalSideSheet(
                            context: context,
                            ignoreAppBar: false,
                            body: ListView.builder(
                              itemBuilder: (context, index) {
                                return ListTile(
                                  leading: Icon(Icons.face),
                                  title: Text("I am on $index index"),
                                  trailing: Icon(Icons.safety_divider),
                                );
                              },
                            ));
                      },
                      child: Text("Show Modal Side Sheet")),
                  Expanded(
                    child: ListView.builder(
                      itemBuilder: (context, index) {
                        return ListTile(
                          leading: Icon(Icons.face),
                          title: Text("I am on $index index"),
                          trailing: Icon(Icons.safety_divider),
                        );
                      },
                    ),
                  )
                ],
              ),
            ),
            sheetWidth: MediaQuery.of(context).size.width / 4,
            sheetBody: ListView.builder(
              itemBuilder: (context, index) {
                return ListTile(
                  leading: Icon(Icons.face),
                  title: Text("I am on $index index"),
                  trailing: Icon(Icons.safety_divider),
                );
              },
            ),
          );
        },
      ),
    );
  }
}

这段代码展示了如何创建一个带有模态侧边栏的应用程序。它包括了一个按钮,当点击这个按钮时,将展示一个模态侧边栏,其中包含一个列表视图,每个列表项都有一些图标、文本和尾部图标。

Modal Side Sheet

标准侧边栏 Standard Side Sheet

标准侧边栏与屏幕的主要UI区域共存,允许查看和与两个表面进行互动。它们只用于平板电脑和桌面端。更多详情请参阅Standard Side Sheet

要使用标准侧边栏,可以通过将BodyWithSideSheet小部件放置到Scaffold的body属性中来实现。

贡献与许可

这是一个完全开源的项目,欢迎为任何功能或修复bug做出贡献。不要忘记给仓库加星并fork它,然后提交你的第一个pull request。本项目遵循MIT许可证发布。


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

1 回复

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


当然,以下是一个关于如何在Flutter应用中使用modal_side_sheet插件的示例代码。这个插件允许你以模态方式展示一个侧边栏(Sheet),非常适合在一些场景下提供额外的操作选项或信息展示。

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

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

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

下面是一个完整的示例代码,展示了如何使用modal_side_sheet插件:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  void _showModalSideSheet() {
    showModalSideSheet(
      context: context,
      builder: (BuildContext context) {
        return Container(
          decoration: BoxDecoration(
            color: Colors.white,
            borderRadius: BorderRadius.circular(16),
          ),
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Text(
                  'This is a modal side sheet!',
                  style: TextStyle(fontSize: 20),
                ),
                SizedBox(height: 16),
                ElevatedButton(
                  onPressed: () {
                    Navigator.of(context).pop(); // 关闭侧边栏
                  },
                  child: Text('Close'),
                ),
              ],
            ),
          ),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Modal Side Sheet Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showModalSideSheet,
          child: Text('Show Modal Side Sheet'),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 添加依赖:在pubspec.yaml文件中添加了modal_side_sheet依赖。
  2. 创建主应用:定义了一个简单的Flutter应用,包含一个主页面MyHomePage
  3. 定义侧边栏内容:在_showModalSideSheet方法中,使用showModalSideSheet函数展示了模态侧边栏。侧边栏的内容是一个简单的容器,里面包含一些文本和一个关闭按钮。
  4. 触发侧边栏:在主页面的中心位置放置了一个按钮,点击该按钮时会调用_showModalSideSheet方法展示侧边栏。

这个示例展示了如何使用modal_side_sheet插件来创建一个基本的模态侧边栏。你可以根据需要自定义侧边栏的内容和样式。

回到顶部