import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';

import 'package:im_stepper/stepper.dart';
import 'package:unit2/model/passo/land_property_owner.dart';
import 'package:unit2/screens/passo/Land/edit_land/land_appraisal.dart';
import 'package:unit2/screens/passo/Land/edit_land/location_and_boundaries_edit.dart';
import 'package:unit2/screens/passo/Land/edit_land/other_improvements_edit.dart';
import 'package:unit2/screens/passo/Land/edit_land/property_assessment_cont_edit.dart';
import 'package:unit2/screens/passo/Land/edit_land/property_assessment_edit.dart';
import 'package:unit2/screens/passo/Land/edit_land/property_owner_info_edit.dart';
import 'package:unit2/screens/passo/Land/edit_land/value_adjustments_edit.dart';
import 'package:unit2/theme-data.dart/colors.dart';

GlobalKey<FormBuilderState> landKey = GlobalKey<FormBuilderState>();

class EditLand extends StatefulWidget {
  final int index;
  final LandPropertyOwner faas;
  final String title;

  const EditLand(
      {super.key,
      required this.title,
      required this.index,
      required this.faas});
  @override
  _EditLand createState() => _EditLand();
}

class _EditLand extends State<EditLand> {
  // THE FOLLOWING TWO VARIABLES ARE REQUIRED TO CONTROL THE STEPPER.
  int activeStep = 0; // Initial step set to 5.

  int upperBound = 6; // upperBound MUST BE total number of icons minus 1.

  void PrevBtn() {
    setState(() {
      activeStep--;
    });
  }

  void NextBtn() {
    setState(() {
      activeStep++;
    });
  }

  void onSAveAll() {
    return Navigator.of(context).pop();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        backgroundColor: primary,
        title: Text('Land FAAS'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          children: [
            NumberStepper(
              numbers: [1, 2, 3, 4, 5, 6, 7],
              activeStepColor: primary,
              numberStyle: TextStyle(color: Colors.white),
              lineColor: primary,
              // activeStep property set to activeStep variable defined above.
              activeStep: activeStep,
              activeStepBorderColor: Colors.white,
              activeStepBorderWidth: 1,
              // This ensures step-tapping updates the activeStep.
              onStepReached: (index) {
                setState(() {
                  activeStep = index;
                });
              },
            ),
            Expanded(
              child: Container(
                child: content(PrevBtn, NextBtn, onSAveAll),
              ),
            ),
          ],
        ),
      ),
    );
  }

  /// Returns the next button.

  // Returns the content widget based on the activeStep.
  Widget content(PrevBtn, NextBtn, onSAveAll) {
    switch (activeStep) {
      case 0:
        return LandPropertyOwnerInfoEdit(NextBtn, widget.faas!);
      case 1:
        return LandLocationAndBoundariesEdit(PrevBtn, NextBtn, widget.faas!);
      case 2:
        return LandAppraisalEdit(PrevBtn, NextBtn, widget.faas.id!);
      case 3:
        return OtherImprovementEditPage(PrevBtn, NextBtn, widget.faas.id!);
      case 4:
        return ValueAdjustmentEditPage(PrevBtn, NextBtn, widget.faas.id!);
      case 5:
        return LandPropertyAssessmentEditPage(
            PrevBtn, NextBtn, widget.faas.id!);
      case 6:
        return LandSignatoriesEdit(onSAveAll, widget.faas.id!);

      default:
        return LandPropertyOwnerInfoEdit(NextBtn, widget.faas!);
    }
  }
}
