build method

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

Builds the UI according to the state in model.

Implementation

@override
Widget build(BuildContext context, RockModel model) => Column(
  children: [
    PageHeader(
      pageIndex: index,
      children: [
        Padding(
          padding: const EdgeInsets.all(4),
          child: Text(
            "Rocks & Minerals",
            style: context.textTheme.headlineMedium,
          ),
        ),
        const Spacer(),
      ],
    ),
    Expanded(
      child: ListView(
        shrinkWrap: true,
        padding: const EdgeInsets.symmetric(vertical: 12, horizontal: 16),
        children: [
          SearchBar(
            hintText: "Search for a rock or characteristic",
            hintStyle: WidgetStatePropertyAll(context.textTheme.bodyMedium),
            controller: model.controller,
            onChanged: model.search,
            backgroundColor: WidgetStatePropertyAll(context.colorScheme.surfaceBright),
            trailing: [
              IconButton(onPressed: model.clear, icon: const Icon(Icons.clear)),
            ],
          ),
          const SizedBox(height: 12),
          for (final rock in model.filteredRocks)
            RockWidget(rock),
        ],
      ),
    ),
  ],
);