搜索插件、代码仓与 APP 分类

solid_bottom_sheet 封面
插件详情v0.1.13

solid_bottom_sheet

一个完全可自定义的底部弹出窗口,易于实现。只需将其放置在 Scaffold 小部件的 bottomSheet 属性上,即可看到神奇效果。更多详细信息请参阅 README.md。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
3040
喜欢数
210
Pub 分数
120

安装插件

flutter pub add solid_bottom_sheet

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

SolidBottomSheet 是一个高度可定制的底部抽屉小部件,专为无缝集成到 Scaffold 的 bottomSheet 属性而设计。它提供流畅的动画效果,完全控制外观和行为,并支持所有主要平台,包括移动设备、网页和桌面端。通过最少的设置,开发者可以快速实现响应式且视觉上吸引人的底部抽屉,以适应其应用的设计。该包强调易用性,同时不牺牲灵活性。

适合场景

  • 实现可折叠的内容面板
  • 使用拖动手势创建交互式模态框
  • 构建动态表单或筛选器
  • 设计自定义导航抽屉
  • 添加可展开的信息卡片

主要特点

  • 完全可自定义的外观
  • 平滑的拖动展开动画
  • 跨平台支持
  • 与 Scaffold 的简单集成
  • 可配置的高度和吸附点
  • 支持嵌套滚动

适合对象

  • 寻求快速底部表单实现的开发者
  • 在跨平台应用中需要一致的底部抽屉用户体验
  • 希望对工作表样式进行细粒度控制的设计人员
  • 具有复杂底部表单交互的项目

使用建议

  • 可能需要额外的样式来适应复杂布局
  • 使用大量内容时的性能影响
  • 有限的内置主题选项
  • 不适合非常大或密集的内容区域

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

Solid bottom sheet

Pub

A full customizable bottom sheet easy to implement. Just put it on your bottomSheet property on your Scaffold widget and see the magic. For more details see the README.md. Feel free to contribute. This package is open to recieve pull request on github. Enjoy! :D

Screenshots

Usage

SolidBottomSheet(
        headerBar: Container(), // Your header here
        body: Container(), // Your body here
      ),

Properties

  // This controls the minimum height of the body. Must be greater or equal of 0.
  // By default is 0
  final double minHeight;

  // This controls the minimum height of the body. By default is 500
  final double maxHeight;

  // This is the content that will be hided of your bottomSheet. You can fit any
  // widget. This parameter is required
  final Widget body;

  // This is the header of your bottomSheet. This widget is the swipeable area
  // where user will interact. This parameter is required
  final Widget headerBar;

  // This flag is used to enable the automatic swipe of the bar. If it's true
  // the bottomSheet will automatically appear or disappear when user stops
  // swiping, but if it's false, it will stay at the last user finger position.
  // By default is true
  final bool autoSwiped;

  // This flag enable that the user can toggle the visibility with just tapping on
  // the header bar. By default is false
  final bool toggleVisibilityOnTap;

  // This flag enable that users can swipe the body and hide or show the
  // solid bottom sheet. Turn on false if you don't want to let the user
  // interact with the solid bottom sheet. By default is false.
  final bool draggableBody;
  
  // This flag enable that users can swipe the header and hide or show the 
  // solid bottom sheet. Turn on false if you don't want to let the user 
  // interact with the solid bottom sheet. By default is true. 
  final bool canUserSwipe;

  // This property defines how 'smooth' or fast will be the animation. Low is
  // the slowest velocity and high is the fastest. By default is medium.
  final Smoothness smoothness;

  // This property is the elevation of the bottomSheet. Must be greater or equal
  // to 0. By default is 0.
  final double elevation;

  // This flag controls if the body is shown to the user by default. If it's
  // true, the body will be shown. If it's false the body will be hided. By
  // default it's false.
  final bool showOnAppear;

  // This object used to control behavior internally
  // from the app and don't depend of user's interaction.
  // can hide and show  methods plus have isOpened variable
  // to check widget visibility on a screen
  final SolidController controller;

  // This method will be executed when the solid bottom sheet is completely
  // opened.
  final Function onShow;

  // This method will be executed when the solid bottom sheet is completely
  // closed.
  final Function onHide;

Controller

  // This is the current smoothness of the bottomSheet
  Smoothness smoothness;

  // Returns the value of the height as stream
  Stream<double> heightStream;

  // Returns the value of the visibility as stream
  Stream<bool> isOpenStream;

  // Returns the value of the height
  double height;

  //  Returns if the solid bottom sheet is opened or not
  bool isOpened;

  // This method sets the value of the height using streams
  void height(double value);

  // Updates the visibility value to false
  void hide();

  // Updates the visibility value to true
  void show();

Example

import 'package:flutter/material.dart';
import 'package:solid_bottom_sheet/solid_bottom_sheet.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> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Solid bottom sheet example"),
      ),
      body: Center(
      child: FlutterLogo(),
      ),
      bottomSheet: SolidBottomSheet(
        headerBar: Container(
          color: Theme.of(context).primaryColor,
          height: 50,
          child: Center(
            child: Text("Swipe me!"),
          ),
        ),
        body: Container(
          color: Colors.white,
          height: 30,
          child: Center(
            child: Text(
              "Hello! I'm a bottom sheet :D",
              style: Theme.of(context).textTheme.display1,
            ),
          ),
        ),
      ),
    );
  }
}

Contribute

Feel free to fork and make pull request to enhance the package.

Github here.

Special Thanks

Viktor Goltstein - Github Nicolei Esperida - Github

Posible incoming features

  • A Shadow that covers the back of the bottom sheet to feel more native.
  • Full view option that displays the bottom sheet like a new navigated page.
  • Controller callbacks to execute when show() and hide() methods are invoked.

所属分类

源码仓库

使用此插件的项目

暂无相关数据。