#flutter #dart #flutter-layout
Вопрос:
Я пытаюсь написать комнату чата, поэтому я использую reversed ScrollablePositionedList
для отображения чатов, когда чат получен, я вставляю его в нулевой индекс, и после этого все ScrollablePositionedList
перестраивается. Есть ли какой ScrollablePositionedList
-нибудь способ предотвратить перезагрузку?
ScrollablePositionedList.builder( reverse: true, physics: ClampingScrollPhysics(), itemCount: _chatController.chats.length, itemScrollController: itemScrollController, itemPositionsListener: itemPositionsListener, itemBuilder: (BuildContext context, int index) { return ShowChatWidget(); }, ),
добавление нового чата:
if (res.resultCode == 200) { chats.insert(0,res.result!) chats.refresh(); }
Комментарии:
1. Что это за тип
chats
?2. изображение, звук и текст
3. Я имею в виду объект «чаты», это а
List
?4. да, его тип-список
5. Я предполагаю, что вы использовали пакет «scrollable_positioned_list», поскольку у Flutter нет виджета такого типа. Правильно ли я понимаю, что единственная причина для этого-отображать самые последние сообщения внизу? Кроме того, в чем именно проблема с перезагрузкой?
Ответ №1:
Если я правильно понял ваш вопрос, вы устраните эту проблему, добавив ключ в ListView .builder () PageStorageKey(T value)
, который предотвратит восстановление списка.
ScrollablePositionedList.builder( key: const PageStorageKeylt;Stringgt;('add_key_name'), reverse: true, physics: ClampingScrollPhysics(), itemCount: _chatController.chats.length, itemScrollController: itemScrollController, itemPositionsListener: itemPositionsListener, itemBuilder: (BuildContext context, int index) { return ShowChatWidget(); }, ),
Комментарии:
1. я добавил ключ к
scrollablePositionedList
, но, к сожалению, он не работает, и проблема все еще существует2. Эй, не могли бы вы поделиться полным кодом экрана чатов? И пробовали ли вы использовать какую-либо модель управления государством
3. из-за конфиденциальности компании я не могу отправить код, но структура проста всякий раз, когда я получаю чат, я обращаюсь к списку obs, и список будет обновляться на самом деле я использую
obx
для обработки управления состоянием на самом делеScrollablePositionedList
оберните белыйobx
виджет