blob: 9abc0465a18c4641bda8413c174190608151fd80 [file] [log] [blame]
// Copyright 2019 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
import 'package:gallery/studies/crane/backlayer.dart';
import 'package:gallery/studies/crane/header_form.dart';
class EatForm extends BackLayerItem {
const EatForm({super.key}) : super(index: 2);
@override
State<EatForm> createState() => _EatFormState();
}
class _EatFormState extends State<EatForm> with RestorationMixin {
final dinerController = RestorableTextEditingController();
final dateController = RestorableTextEditingController();
final timeController = RestorableTextEditingController();
final locationController = RestorableTextEditingController();
@override
String get restorationId => 'eat_form';
@override
void restoreState(RestorationBucket? oldBucket, bool initialRestore) {
registerForRestoration(dinerController, 'diner_controller');
registerForRestoration(dateController, 'date_controller');
registerForRestoration(timeController, 'time_controller');
registerForRestoration(locationController, 'location_controller');
}
@override
void dispose() {
dinerController.dispose();
dateController.dispose();
timeController.dispose();
locationController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
final localizations = GalleryLocalizations.of(context)!;
return HeaderForm(
fields: <HeaderFormField>[
HeaderFormField(
index: 0,
iconData: Icons.person,
title: localizations.craneFormDiners,
textController: dinerController.value,
),
HeaderFormField(
index: 1,
iconData: Icons.date_range,
title: localizations.craneFormDate,
textController: dateController.value,
),
HeaderFormField(
index: 2,
iconData: Icons.access_time,
title: localizations.craneFormTime,
textController: timeController.value,
),
HeaderFormField(
index: 3,
iconData: Icons.restaurant_menu,
title: localizations.craneFormLocation,
textController: locationController.value,
),
],
);
}
}