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 _groups; Future _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 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(); }, )); }