showChoicesRadioDialog<T> function

Future<T> showChoicesRadioDialog<T>(
  1. BuildContext context,
  2. {Widget title,
  3. Widget content,
  4. @required List<DialogChoice<T>> choices,
  5. Widget cancelWidget,
  6. Widget confirmWidget,
  7. bool barrierDismissible = false,
  8. Color barrierColor,
  9. bool useSafeArea = true,
  10. bool useRootNavigator = true,
  11. RouteSettings routeSettings}
)

Displays a dialog with the choices informed in the parameter choices using radio buttons.

To close the dialog, the user must select one of the choices listed on the screen and click on the OK action, or when the Cancel button is clicked.

Example of using the dialog:

List<String> result = await showChoicesCheckBoxDialog<String>(context,
    title: Text('Select users'),
    choices: [
        DialogChoice(
            icon: Icon(Icons.person),
            title: Text('Ricardo Crescenti'),
            subtitle: Text('ricardo.crescenti@gmail.com'),
            value: 'ricardo.crescenti'),
        DialogChoice(
            icon: Icon(Icons.person),
            title: Text('Ana Luiza Crescenti'),
            subtitle: Text('analuiza.crescenti@gmail.com'),
            value: 'analuiza.crescenti'),
        DialogChoice(
            icon: Icon(Icons.person),
            title: Text('Luis Otávio Crescenti'),
            subtitle: Text('luisotavio.crescenti@gmail.com'),
            value: 'luisotavio.crescenti'),
    ]);

if (result != null) {
    showBasicDialog(context, title: Text('Selected users'), content: Text(result.reduce((value, element) => (value == null ? '' : value + ', ') + element)));
}

Implementation

Future<T> showChoicesRadioDialog<T>(BuildContext context,
    {Widget title,
    Widget content,
    @required List<DialogChoice<T>> choices,
    Widget cancelWidget,
    Widget confirmWidget,
    bool barrierDismissible = false,
    Color barrierColor,
    bool useSafeArea = true,
    bool useRootNavigator = true,
    RouteSettings routeSettings}) async {
  List<T> result = await _showChoicesDialog<T>(context,
      title: title,
      content: content,
      choiceType: DialogChoicesType.radio,
      choices: choices,
      cancelWidget: cancelWidget,
      okWidget: confirmWidget,
      barrierDismissible: barrierDismissible,
      barrierColor: barrierColor,
      useSafeArea: useSafeArea,
      useRootNavigator: useRootNavigator,
      routeSettings: routeSettings);

  return (result != null && result.isNotEmpty ? result[0] : null);
}