mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Create pick user dialog
This commit is contained in:
63
lib/ui/dialogs/pick_user_dialog.dart
Normal file
63
lib/ui/dialogs/pick_user_dialog.dart
Normal file
@ -0,0 +1,63 @@
|
||||
import 'package:comunic/models/user.dart';
|
||||
import 'package:comunic/ui/widgets/dialogs/cancel_dialog_button.dart';
|
||||
import 'package:comunic/ui/widgets/dialogs/confirm_dialog_button.dart';
|
||||
import 'package:comunic/ui/widgets/pick_user_widget.dart';
|
||||
import 'package:comunic/ui/widgets/safe_state.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Pick user dialog
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
/// Ask the user to pick a user
|
||||
///
|
||||
/// Returns null if no user was selected
|
||||
Future<int> showPickUserDialog(BuildContext context) async {
|
||||
return await showDialog(context: context, builder: (c) => _PickUserDialog());
|
||||
}
|
||||
|
||||
class _PickUserDialog extends StatefulWidget {
|
||||
@override
|
||||
__PickUserDialogState createState() => __PickUserDialogState();
|
||||
}
|
||||
|
||||
class __PickUserDialogState extends SafeState<_PickUserDialog> {
|
||||
User _user;
|
||||
|
||||
bool get _isValid => _user != null;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text(tr("Choose a user")),
|
||||
content: _buildContent(),
|
||||
actions: <Widget>[
|
||||
CancelDialogButton(),
|
||||
ConfirmDialogButton(
|
||||
value: _isValid ? _user.id : null,
|
||||
enabled: _isValid,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildContent() {
|
||||
final size = MediaQuery.of(context).size;
|
||||
print(size);
|
||||
return Container(
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
PickUserWidget(
|
||||
onSelectUser: (u) => setState(() => _user = u),
|
||||
label: tr("Search user..."),
|
||||
onValueChange: (u) => setState(() => _user = null),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user