mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-10-23 06:53:23 +00:00
67 lines
1.8 KiB
Dart
67 lines
1.8 KiB
Dart
|
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();
|
||
|
},
|
||
|
));
|
||
|
}
|