Как мне скруглить края этой панели во Флаттере? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую зависимость https://pub.dev/packages/flutter_sliding_up_panel и хочу округлить края панели ниже. Это код, который я использую

 SlidingUpPanelWidget(
      child: Column(
        children: <Widget>[
          ClipRRect(
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(35.0),
              topRight: Radius.circular(35.0),
            ),
            child: Container(
              color: Colors.red,
              alignment: Alignment.center,
              child: Row(
                children: <Widget>[
                  Icon(
                    Icons.menu,
                    size: 30,
                  ),
                  Padding(
                    padding: EdgeInsets.only(
                      left: 8.0,
                    ),
                  ),
                  Text(
                    'click or drag',
                  )
                ],
                mainAxisAlignment: MainAxisAlignment.center,
              ),
              height: 50.0,
            ),
          ),
          Divider(
            height: 0.5,
            color: Colors.grey,
          ),
          Flexible(
            child: Container(
              child: ListView.separated(
                controller: scrollController,
                physics: ClampingScrollPhysics(),
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text('list item $index'),
                  );
                },
                separatorBuilder: (context, index) {
                  return Divider(
                    height: 0.5,
                  );
                },
                shrinkWrap: true,
                itemCount: 20,
              ),
              color: Colors.white,
            ),
          ),
        ],
        mainAxisSize: MainAxisSize.min,
      ),
      controlHeight: 50.0,
      anchor: 0.4,
      panelController: panelController,
    ),

, и вот как выглядит свернутая панель: enter image description here

Я хочу, чтобы вся панель была округленный как красный контейнер.

1 Ответ

1 голос
/ 14 апреля 2020

Вы не можете сделать это. В библиотеке есть жестко закодированный Material виджет вокруг предоставленного вами виджета.

Единственное, что вы можете сделать, - это скопировать всю библиотеку и изменить ее. Это небольшая библиотека, в которой есть только один файл, который нужно скопировать.

В строке 192 в библиотеке у вас есть этот код:

child: Material(
                key: _childKey,
                color: Theme.of(context).backgroundColor,
                elevation: widget.elevation,
                child: SizedBox(
                  height: MediaQuery.of(context).size.height,
                  child: widget.child,
                ),
              ),

Измените его следующим образом:

child: Material(
                key: _childKey,
                color: Colors.transparent,
                shadowColor: Colors.transparent,
                elevation: widget.elevation,
                child: SizedBox(
                  height: MediaQuery.of(context).size.height,
                  child: widget.child,
                ),
              ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...