Flutter - граница карты удалена при прокрутке списка стека - PullRequest
0 голосов
/ 28 мая 2020

У меня проблема, когда я прокручиваю границу списка, обрезанную поверх карточки. Я использовал stackchildlist с SliverPersistentHeader. Я добавил код ниже. Когда я прокручиваю список вверху списка, размер уменьшается, пожалуйста, проверьте код. Мы применяем maxHeight и minHeight. Обрежьте рамку наверху карточки. Если у кого-то есть представление об этом типе списка или проблемы, пожалуйста, оставьте свои предложения. С уважением и уважением.

@override
Widget build(BuildContext context) {
return Container(
  color: ColorsApp.black,
  child: CustomScrollView(
    slivers: colr
        .map(
          (color) =>
          StackedListChild(
            minHeight: _minHeight,
            maxHeight: colr.indexOf(color) == colr.length - 1
                ? MediaQuery
                .of(context)
                .size
                .height
                : _maxHeight,
            pinned: true,
            child: Center(
              child: new Container(
                height: 300.0,
                color: Colors.transparent,
                child: new Container(
                    decoration: new BoxDecoration(
                        color: Colors.green,
                        borderRadius: new BorderRadius.only(
                          topLeft: const Radius.circular(40.0),
                          topRight: const Radius.circular(40.0),
                        )
                    ),
                    child: new Center(
                      child: new Text("Hi modal sheet"),
                    )
                ),
              ),
            ),
          ),
    )
        .toList(),
  ),
);}

class StackedListChild extends StatelessWidget {
final double minHeight;
final double maxHeight;
final bool pinned;
final bool floating;
final Widget child;

 SliverPersistentHeaderDelegate get _delegate => _StackedListDelegate(
  minHeight: minHeight, maxHeight: maxHeight, child: child);

 const StackedListChild({
 Key key,
@required this.minHeight,
@required this.maxHeight,
@required this.child,
this.pinned = false,
this.floating = false,
 })  : assert(child != null),
    assert(minHeight != null),
    assert(maxHeight != null),
    assert(pinned != null),
    assert(floating != null),
    super(key: key);

 @override
 Widget build(BuildContext context) => SliverPersistentHeader(
  key: key, pinned: pinned, floating: floating, delegate: _delegate);}

    class _StackedListDelegate extends SliverPersistentHeaderDelegate {
    final double minHeight;
    final double maxHeight;
     final Widget child;

   _StackedListDelegate({
     @required this.minHeight,
     @required this.maxHeight,
     @required this.child,
      });

    @override
     double get minExtent => minHeight;

    @override
    double get maxExtent => math.max(maxHeight, minHeight);

      @override
       Widget build(
       BuildContext context, double shrinkOffset, bool overlapsContent) {
      return new SizedBox.expand(child: child);
      }

   @override
   bool shouldRebuild(_StackedListDelegate oldDelegate) {
    return maxHeight != oldDelegate.maxHeight ||
    minHeight != oldDelegate.minHeight ||
    child != oldDelegate.child; }

enter image description here

...