Flutter:使材质阴影流血

时间:2020-12-29 18:28:56

标签: flutter

我有以下结构(简化):

  LEFT_WIDTH = 80

  Widget _landscape(ctx) => Scaffold(
        body: AnnotatedRegion<SystemUiOverlayStyle>(
          child: Row(
            children: <Widget>[
              Container(color: Colors.white, width: LEFT_WIDTH), // LEFT MENU
              Expanded(child: _stack()), // MAIN CONTENT
            ],
          ),
          value: NOT_IMPORTANT,
        ),
      );

  Widget _stack() => Stack(
        children: <Widget>[
          SlidingUpPanel( // https://pub.dev/packages/sliding_up_panel
            body: SizedBox(
              child: ABC_GRID,
              width: mq.size.width - LEFT_WIDTH,
              height: mq.size.height,
            ),
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(16),
              topRight: Radius.circular(16),
            ),
            panelBuilder: (sc) => _panel(ctx, sc),
          ),
        ],
      );

这将产生以下输出:

panel-shadow

请注意,向上/向下拖动面板时,面板的左侧阴影会消失。

查看库的源代码,panel.dart,面板实现如下:

        !_isPanelVisible ? Container() : _gestureHandler(
          child: AnimatedBuilder(
            animation: _ac,
            builder: (context, child) {
              return Container(
                height: _ac.value * (widget.maxHeight - widget.minHeight) + widget.minHeight,
                margin: widget.margin,
                padding: widget.padding,
                decoration: widget.renderPanelSheet ? BoxDecoration(
                  border: widget.border,
                  borderRadius: widget.borderRadius,
                  boxShadow: widget.boxShadow,
                ) : null,
                child: child,
              );
            },
            child: Stack(
              children: <Widget>[
                Positioned(
                  child: Container(maxHeight, child: widget.panelBuilder(_sc)),
                  ...
                ),
                ...
              ],
            ),
          ),
        ),

如何让阴影总是出现? (基本上,拖动时也会流血到它的邻居)

0 个答案:

没有答案