ExpansionTile внутри ListView - страница не прокручивается - PullRequest
0 голосов
/ 07 февраля 2020

У меня проблема с прокруткой страницы. Я показываю пользователям транзакции, сгруппированные по дням. поэтому внутри ExpansionTile будет несколько элементов.

Сначала я беру дни из базы данных, а затем беру транзакции, совершенные в этот день. поэтому ниже показано, как моя страница работает

  1. взять все записи
  2. получить дни и поместить в один список (список дней)
  3. загрузить основные листы расширения с помощью для l oop в этом списке (список дней)
  4. когда мы делаем для l oop, принимаем транзакции в этот день и загружаем в другой массив
  5. , привязываем список детей как дочерние к ExpansionTile.

Мое представление загружается правильно, но когда я открываю подпункты ExpansionTile, я не могу прокрутить страницу. пожалуйста, проверьте видео для более четкого понимания. https://drive.google.com/file/d/1EVETVRHx0vZqiGryrcxUR0klrEX8Y63G/view?usp=sharing

Мой код указан ниже,

 Widget build(BuildContext context) {
    return new Scaffold(

      body: FutureBuilder(
        future: getTransactions(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return Center(child: CircularProgressIndicator());
          } else if (feedItemsParent.isEmpty) {
            return noRecordsDialogue(context, 'No transactions record', '');
          } else if (feedItemsParent.length == 0) {
            return noRecordsDialogue(context, 'No transactions record', '');
          } else {
            return new ListView.builder(
                shrinkWrap: true,
                itemCount: feedItemsParent.length,
                itemBuilder: (BuildContext ctxt, int index) =>
                    buildBody(ctxt, index));
          }
        },
      ),
    );
  }

ниже - функция buildBody.

Widget buildBody(BuildContext ctxt, int index) {
    return new custom.ExpansionTile(
      initiallyExpanded: true,
      trailing: new Container(width: 20),
      headerBackgroundColor: Color(0xFFeff0f1),
      title: Text(
        feedItemsParent[index].transactiondatesmall.toString(),
        style: TextStyle(
          fontSize: 16,
          color: Colors.black,
          fontWeight: FontWeight.bold,
        ),
      ),
      children: <Widget>[
        buildTransactionList(
            feedItemsParent[index].transactiondatesmall.toString()),
      ],
    );
  }

ниже - как я беру всех детей и связывание их внутри ExpansionTile.

 buildTransactionList(dtCompare) {
    if (feedItems.length == 0) {
      return noRecordsDialogue(context, 'No transactions record', '');
    } else {
      List<UserTransaction> feedItemsChild = [];
      for (int j = 0; j < feedItems.length; j++) {
        if (feedItems[j].transactiondatesmall == dtCompare) {
          feedItemsChild.add(feedItems[j]);
        }
      }

      return ListView(
        padding: const EdgeInsets.only(bottom: 16.0),
        shrinkWrap: true,
        children: feedItemsChild,
      );
    }
}

Заранее спасибо.

1 Ответ

0 голосов
/ 10 февраля 2020

Наконец я могу решить эту проблему, используя ответы, приведенные в ссылке ниже. Изменил мой код в соответствии с данным в ответе, так как мое требование было на 80% схожим.

Как создать расширяемый ListView в Flutter

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...