1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 06:53:23 +00:00
comunicmobile/lib/forez/tour/join_group_pane.dart

67 lines
1.8 KiB
Dart
Raw Normal View History

2021-04-23 16:46:35 +00:00
import 'package:comunic/helpers/forez_groups_helper.dart';
import 'package:comunic/models/group.dart';
import 'package:comunic/ui/widgets/async_screen_widget.dart';
import 'package:comunic/ui/widgets/tour/presentation_pane.dart';
import 'package:comunic/utils/intl_utils.dart';
import 'package:flutter/material.dart';
/// Ask the user to join a Forez group
///
/// @author Pierre Hubert
class JoinGroupPane extends PresentationPane {
JoinGroupPane({
@required Function() onUpdated,
@required GlobalKey key,
}) : super(
icon: Icons.login,
title: tr("Join a group"),
child: (c) => _JoinGroupPaneBody(
key: key,
onUpdated: onUpdated,
),
);
}
class _JoinGroupPaneBody extends StatefulWidget {
final Function() onUpdated;
const _JoinGroupPaneBody({
Key key,
@required this.onUpdated,
}) : assert(onUpdated != null),
super(key: key);
@override
__JoinGroupPaneBodyState createState() => __JoinGroupPaneBodyState();
}
class __JoinGroupPaneBodyState extends State<_JoinGroupPaneBody> {
List<Group> _groups;
Future<void> _load() async {
_groups = await ForezGroupsHelper.getForezGroups();
}
@override
Widget build(BuildContext context) => AsyncScreenWidget(
onReload: _load,
onBuild: onBuild,
errorMessage: tr("Failed to load the list of Forez groups!"));
List<Widget> get _initialWidgets => [
Text(tr("Please choose now the Forez group you want to join...")),
];
Widget onBuild() => Flexible(
child: ListView.builder(
itemCount: _initialWidgets.length + _groups.length,
itemBuilder: (c, i) {
if (i < _initialWidgets.length) return _initialWidgets[i];
final group = _groups[i - _initialWidgets.length];
return ListTile();
},
));
}