import 'package:flutter/material.dart';
import 'package:flutter_typeahead/flutter_typeahead.dart';
import 'package:rkm/models/pais_modelo.dart';
import '../config/color_palette.dart';
import '../config/const_variable.dart';

class DropDownButtonComPesquisaPaises extends StatelessWidget {
  var onChanged;
  PaisModelo? select;
  String title;
  double fontSize;
  List<PaisModelo> list;
  double width;
  double heightDinamic;
  double widthContainer;

  DropDownButtonComPesquisaPaises({
    required this.onChanged,
    required this.select,
    required this.title,
    required this.list,
    required this.width,
    this.heightDinamic = 0.2,
    this.fontSize = 15,
    this.widthContainer = 300,
});

  @override
  Widget build(BuildContext context) {

    double height = MediaQuery.of(context).size.height;

    return
      Container(
        width: width,
        height: height*heightDinamic,
        margin: ConstVariable().marginHightInput,
        color: ColorPalette.white,
        child: ListView(
          shrinkWrap: true,
          children: [
            TypeAheadField(
              controller: TextEditingController(),
              suggestionsCallback: (pattern) {
                if (list != null) {
                  return list.where((value) => value.PAIS.toLowerCase().contains(pattern.toLowerCase())).toList();
                } else {
                  return Future.value([]);
                }
              },
              emptyBuilder:  (context) {
                return ListTile(
                  title: Text('Nenhum resultado encontrado'),
                );
              },
              itemBuilder: (context, suggestion) {
                // Aqui, o tipo de 'suggestion' é dinâmico, pois a lista retornada
                // por suggestionsCallback pode conter diferentes tipos de objetos.
                // Você pode usar a notação de tipo dinâmico ou verificar o tipo do
                // objeto e fazer o cast para 'PaisModelo' antes de usar.
                if (suggestion is PaisModelo) {
                  // Faz o cast para 'PaisModelo' se necessário
                  final paisModelo = suggestion as PaisModelo;
                  return ListTile(
                    title: Text(paisModelo.PAIS),
                  );
                }
                // Se o objeto não for do tipo 'PaisModelo', retorne um widget vazio
                return SizedBox.shrink();
              },
              onSelected: onChanged,
            )

          ],
        ),
      );
  }
}
