flutter技巧

作者: 你飞跃俊杰 | 来源:发表于2022-07-01 18:54 被阅读0次

showModalBottomSheet

  1. 无法直接设置圆角;
    使用stack包裹住子组件解决圆角的问题,且需要设置背景颜色为Colors.balck54,这个颜色是bottomsheet弹出时系统的默认颜色
                 showModalBottomSheet(
                    context: context,
                    builder: (BuildContext bc) {
                      return Stack(
                        children: <Widget>[
                          Container(
                            height: 30.0,
                            width: double.infinity,
                            color: Colors.black54,
                          ),
                          Container(
                            decoration: BoxDecoration(
                                color: Colors.white,
                                borderRadius: BorderRadius.only(
                                  topLeft: Radius.circular(25),
                                  topRight: Radius.circular(25),
                                )),
                          ),
                          Container(
                            child: FlatButton(
                              child: Container(
                                alignment: Alignment.center,
                                padding:
                                    EdgeInsets.only(top: 33.0, bottom: 33.0),
                                child: Text(
                                  "bottomSheet的内容",
                                ),
                              ),
                            ),
                          ),
                        ],
                      );
                    });
  1. 组件最多只能撑满半屏幕,再多就出界了;
    系统的bottomSheet最大高度是屏幕的一半,原因是源码里面限制了最大高度:
maxHeight: constraints.maxHeight * 9.0 / 16.0,
  1. 在这个组件里面如果有选择按钮等其他一些需要改变状态的组件时,即便使用setState,状态也无法更新。
    在bottomSheet里面如果有需要更改状态的组件,例如CheckBox的选中、未选中状态,这时setState发现bottomSheet本身没有更新。
    使用evenbus,在bottomSheet里面需要更新的地方发射更新信息,在拷贝出的系统源码中加入listen即可
@override
  void initState() {
    super.initState();
 
    Manager.instance.eventBus.on<RefreshBottomSheetEvent>().listen((event) {
      setState(() {
      });
    });
  }

fire消息的代码:

Manager.instance.eventBus.fire(RefreshBottomSheetEvent());

这个event:

class RefreshBottomSheetEvent {
  RefreshBottomSheetEvent();
}

相关文章

  • Flutter 开发小技巧

    级别:★☆☆☆☆标签:「Flutter 开发小技巧」「Flutter 快捷键」「Flutter插件」「Flutte...

  • flutter 小技巧

    flutter 小技巧 1.flutter创建其他平台文件命令 设置flutter支持平台命令 创建其他平台文件命...

  • flutter中provider使用

    flutter官方provider 使用技巧 Consumer 和 Selector Consumer 1、可以在...

  • #Flutter手势中的 Behavior

    Flutter手势中的behavior 前言:本杂文的阅读者需要掌握Flutter界面布局基本技巧,会使用Widg...

  • flutter技巧

    showModalBottomSheet 无法直接设置圆角;使用stack包裹住子组件解决圆角的问题,且需要设置背...

  • Flutter开发工具使用技巧

    Android Studio开发Flutter使用技巧 快捷键 以Android Studio + Mac为例:1...

  • Flutter 调试技巧

    一、前言 随着Flutter的大火,加上我也很看好他的前景,iOS,Android,web一套代码运行多个平台,想...

  • Flutter小技巧

    在widget被放置在应用之前就知晓其尺寸 LayoutBuilder的build函数可以通过context和co...

  • Flutter 调试技巧

    // debugPaintPointersEnabled = true;//标志打开一个特殊模式,任何正在点击的...

  • Flutter小技巧

    1. 获取状态栏高度 2. 设置AppBar的高度 3. 系统默认的AppBar、TabBar高度 在Dart P...

网友评论

    本文标题:flutter技巧

    本文链接:https://www.haomeiwen.com/subject/wdukbrtx.html