build method

  1. @override
Widget build(
  1. BuildContext context,
  2. ColorBuilder model
)
override

Builds the UI according to the state in model.

Implementation

@override
Widget build(BuildContext context, ColorBuilder model) => AlertDialog(
    title: const Text("Pick a color"),
    actions: [
      TextButton(child: const Text("Cancel"), onPressed: () => Navigator.of(context).pop()),
      ElevatedButton(
        onPressed: () async {
          final result = await model.setColor();
          if (result && context.mounted) Navigator.of(context).pop();
        },
        child: const Text("Save"),
      ),
    ],
    content: Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        SegmentedButton(
          style: SegmentedButton.styleFrom(selectedBackgroundColor: Colors.transparent),
          onSelectionChanged: model.updateColor,
          emptySelectionAllowed: true,
          selected: {model.color},
          segments: [
            ButtonSegment(
              value: ProtoColor.RED,
              icon: Container(height: 48, width: 48, margin: const EdgeInsets.all(8), color: Colors.red),
              label: const Text("Red"),
            ),
            ButtonSegment(
              value: ProtoColor.GREEN,
              icon: Container(height: 48, width: 48, margin: const EdgeInsets.all(8), color: Colors.green),
              label: const Text("Green"),
            ),
            ButtonSegment(
              value: ProtoColor.BLUE,
              icon: Container(height: 48, width: 48, margin: const EdgeInsets.all(8), color: Colors.blue),
              label: const Text("Blue"),
            ),
          ],
        ),
        const SizedBox(height: 16),
        CheckboxListTile(
          value: model.blink,
          onChanged: model.updateBlink,
          title: const Text("Blink"),
        ),
      ],
    ),
);