refactor: Remove unnecessary builder widget

This commit is contained in:
krille-chan 2024-11-03 11:02:06 +01:00
commit 4453048285
No known key found for this signature in database
2 changed files with 18 additions and 22 deletions

View file

@ -23,9 +23,18 @@ class ChatEventList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final timeline = controller.timeline;
if (timeline == null) {
return const Center(
child: CircularProgressIndicator.adaptive(
strokeWidth: 2,
),
);
}
final horizontalPadding = FluffyThemes.isColumnMode(context) ? 8.0 : 0.0; final horizontalPadding = FluffyThemes.isColumnMode(context) ? 8.0 : 0.0;
final events = controller.timeline!.events.filterByVisibleInGui(); final events = timeline.events.filterByVisibleInGui();
final animateInEventIndex = controller.animateInEventIndex; final animateInEventIndex = controller.animateInEventIndex;
// create a map of eventId --> index to greatly improve performance of // create a map of eventId --> index to greatly improve performance of
@ -55,12 +64,12 @@ class ChatEventList extends StatelessWidget {
(BuildContext context, int i) { (BuildContext context, int i) {
// Footer to display typing indicator and read receipts: // Footer to display typing indicator and read receipts:
if (i == 0) { if (i == 0) {
if (controller.timeline!.isRequestingFuture) { if (timeline.isRequestingFuture) {
return const Center( return const Center(
child: CircularProgressIndicator.adaptive(strokeWidth: 2), child: CircularProgressIndicator.adaptive(strokeWidth: 2),
); );
} }
if (controller.timeline!.canRequestFuture) { if (timeline.canRequestFuture) {
return Center( return Center(
child: IconButton( child: IconButton(
onPressed: controller.requestFuture, onPressed: controller.requestFuture,
@ -79,12 +88,12 @@ class ChatEventList extends StatelessWidget {
// Request history button or progress indicator: // Request history button or progress indicator:
if (i == events.length + 1) { if (i == events.length + 1) {
if (controller.timeline!.isRequestingHistory) { if (timeline.isRequestingHistory) {
return const Center( return const Center(
child: CircularProgressIndicator.adaptive(strokeWidth: 2), child: CircularProgressIndicator.adaptive(strokeWidth: 2),
); );
} }
if (controller.timeline!.canRequestHistory) { if (timeline.canRequestHistory) {
return Builder( return Builder(
builder: (context) { builder: (context) {
WidgetsBinding.instance WidgetsBinding.instance
@ -105,8 +114,8 @@ class ChatEventList extends StatelessWidget {
// The message at this index: // The message at this index:
final event = events[i]; final event = events[i];
final animateIn = animateInEventIndex != null && final animateIn = animateInEventIndex != null &&
controller.timeline!.events.length > animateInEventIndex && timeline.events.length > animateInEventIndex &&
event == controller.timeline!.events[animateInEventIndex]; event == timeline.events[animateInEventIndex];
return AutoScrollTag( return AutoScrollTag(
key: ValueKey(event.eventId), key: ValueKey(event.eventId),
@ -137,7 +146,7 @@ class ChatEventList extends StatelessWidget {
longPressSelect: controller.selectedEvents.isNotEmpty, longPressSelect: controller.selectedEvents.isNotEmpty,
selected: controller.selectedEvents selected: controller.selectedEvents
.any((e) => e.eventId == event.eventId), .any((e) => e.eventId == event.eventId),
timeline: controller.timeline!, timeline: timeline,
displayReadMarker: displayReadMarker:
i > 0 && controller.readMarkerEventId == event.eventId, i > 0 && controller.readMarkerEventId == event.eventId,
nextEvent: i + 1 < events.length ? events[i + 1] : null, nextEvent: i + 1 < events.length ? events[i + 1] : null,

View file

@ -287,20 +287,7 @@ class ChatView extends StatelessWidget {
Expanded( Expanded(
child: GestureDetector( child: GestureDetector(
onTap: controller.clearSingleSelectedEvent, onTap: controller.clearSingleSelectedEvent,
child: Builder( child: ChatEventList(controller: controller),
builder: (context) {
if (controller.timeline == null) {
return const Center(
child: CircularProgressIndicator.adaptive(
strokeWidth: 2,
),
);
}
return ChatEventList(
controller: controller,
);
},
),
), ),
), ),
if (controller.room.canSendDefaultMessages && if (controller.room.canSendDefaultMessages &&