import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; import 'package:fluffychat/pages/archive/archive.dart'; import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; import 'package:fluffychat/widgets/layouts/max_width_body.dart'; class ArchiveView extends StatelessWidget { final ArchiveController controller; const ArchiveView(this.controller, {super.key}); @override Widget build(BuildContext context) { return FutureBuilder>( future: controller.getArchive(context), builder: (BuildContext context, snapshot) => Scaffold( appBar: AppBar( leading: const Center(child: BackButton()), title: Text(L10n.of(context)!.archive), actions: [ if (snapshot.data?.isNotEmpty ?? false) Padding( padding: const EdgeInsets.all(8.0), child: TextButton.icon( onPressed: controller.forgetAllAction, label: Text(L10n.of(context)!.clearArchive), icon: const Icon(Icons.cleaning_services_outlined), ), ), ], ), body: MaxWidthBody( withScrolling: false, child: Builder( builder: (BuildContext context) { if (snapshot.hasError) { return Center( child: Text( L10n.of(context)!.oopsSomethingWentWrong, textAlign: TextAlign.center, ), ); } if (!snapshot.hasData) { return const Center( child: CircularProgressIndicator.adaptive(strokeWidth: 2), ); } else { if (controller.archive.isEmpty) { return const Center( child: Icon(Icons.archive_outlined, size: 80), ); } return ListView.builder( itemCount: controller.archive.length, itemBuilder: (BuildContext context, int i) => ChatListItem( controller.archive[i], onForget: () => controller.forgetRoomAction(i), onTap: () => context .go('/rooms/archive/${controller.archive[i].id}'), ), ); } }, ), ), ), ); } }