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:
17
lib/ui/widgets/dialogs/cancel_dialog_button.dart
Normal file
17
lib/ui/widgets/dialogs/cancel_dialog_button.dart
Normal file
@ -0,0 +1,17 @@
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Render a cancel button for an alert dialog
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
class CancelDialogButton extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text(tr("Cancel").toUpperCase()),
|
||||
textColor: Colors.red,
|
||||
);
|
||||
}
|
||||
}
|
27
lib/ui/widgets/dialogs/confirm_dialog_button.dart
Normal file
27
lib/ui/widgets/dialogs/confirm_dialog_button.dart
Normal file
@ -0,0 +1,27 @@
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
/// Confirm dialog button
|
||||
///
|
||||
/// @author Pierre HUBERT
|
||||
|
||||
class ConfirmDialogButton<T> extends StatelessWidget {
|
||||
final bool enabled;
|
||||
final T value;
|
||||
|
||||
const ConfirmDialogButton({
|
||||
Key key,
|
||||
this.enabled = true,
|
||||
@required this.value,
|
||||
}) : assert(enabled != null),
|
||||
super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialButton(
|
||||
onPressed: enabled ? () => Navigator.of(context).pop(value) : null,
|
||||
child: Text(tr("Confirm").toUpperCase()),
|
||||
textColor: Colors.green,
|
||||
);
|
||||
}
|
||||
}
|
@ -15,19 +15,21 @@ typedef OnSelectUserCallback = void Function(User);
|
||||
|
||||
class PickUserWidget extends StatefulWidget {
|
||||
final OnSelectUserCallback onSelectUser;
|
||||
final void Function(String) onValueChange;
|
||||
final String label;
|
||||
final bool resetOnChoose;
|
||||
final bool keepFocusOnChoose;
|
||||
final bool enabled;
|
||||
|
||||
const PickUserWidget(
|
||||
{Key key,
|
||||
@required this.onSelectUser,
|
||||
@required this.label,
|
||||
this.resetOnChoose = false,
|
||||
this.keepFocusOnChoose = false,
|
||||
this.enabled = true})
|
||||
: assert(onSelectUser != null),
|
||||
const PickUserWidget({
|
||||
Key key,
|
||||
@required this.onSelectUser,
|
||||
@required this.label,
|
||||
this.resetOnChoose = false,
|
||||
this.keepFocusOnChoose = false,
|
||||
this.onValueChange,
|
||||
this.enabled = true,
|
||||
}) : assert(onSelectUser != null),
|
||||
assert(label != null),
|
||||
assert(resetOnChoose != null),
|
||||
assert(keepFocusOnChoose != null),
|
||||
@ -93,9 +95,9 @@ class _PickUserWidgetState extends State<PickUserWidget> {
|
||||
shrinkWrap: true,
|
||||
itemCount: _suggestions == null ? 0 : _suggestions.length,
|
||||
itemBuilder: (c, i) => SimpleUserTile(
|
||||
user: _suggestions[i],
|
||||
onTap: _userTapped,
|
||||
),
|
||||
user: _suggestions[i],
|
||||
onTap: _userTapped,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
@ -116,9 +118,11 @@ class _PickUserWidgetState extends State<PickUserWidget> {
|
||||
|
||||
/// This method get called each time the input value is updated
|
||||
Future<void> _updateSuggestions() async {
|
||||
if (_controller.value.text.length == 0) return _removeOverlay();
|
||||
if (widget.onValueChange != null) widget.onValueChange(_controller.text);
|
||||
|
||||
final results = await _searchHelper.searchUser(_controller.value.text);
|
||||
if (_controller.text.length == 0) return _removeOverlay();
|
||||
|
||||
final results = await _searchHelper.searchUser(_controller.text);
|
||||
|
||||
if (results == null) return;
|
||||
|
||||
|
Reference in New Issue
Block a user