import 'package:farm_tpf/presentation/screens/resources/bloc/supply_bloc.dart';
import 'package:farm_tpf/utils/const_color.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

class WidgetSearch extends StatefulWidget {
  final String type;
  final int selectedId;
  WidgetSearch({required this.type, required this.selectedId});
  @override
  _WidgetSearchState createState() => _WidgetSearchState();
}

class _WidgetSearchState extends State<WidgetSearch> {
  late BuildContext _blocContext;
  TextEditingController _searchController = TextEditingController();

  @override
  void initState() {
    super.initState();
    _searchController.addListener(() {
      final keyword = _searchController.text;
      if (keyword.isNotEmpty) {
        //search when text change
      }
    });
  }

  Widget getSearchBarUI() {
    _searchController.text = "";
    return Padding(
      padding: const EdgeInsets.only(left: 16, right: 16, top: 4, bottom: 0),
      child: Row(
        children: <Widget>[
          Expanded(
            child: Padding(
              padding: const EdgeInsets.only(right: 8, top: 8, bottom: 0),
              child: Container(
                child: Padding(
                  padding: const EdgeInsets.only(left: 16, right: 16, top: 4, bottom: 4),
                  child: TextField(
                    textInputAction: TextInputAction.done,
                    controller: _searchController,
                    onChanged: (String txt) {},
                    cursorColor: AppColors.GRAY1,
                    decoration: InputDecoration(
                        suffixIcon: IconButton(
                            icon: const Icon(
                              Icons.search,
                              size: 30,
                            ),
                            onPressed: () {
                              FocusScope.of(context).requestFocus(FocusNode());
                              BlocProvider.of<SupplyBloc>(_blocContext)
                                  .add(OnSearch(searchString: _searchController.text, type: widget.type, selectedId: widget.selectedId));
                            }),
                        hintText: 'Tìm kiếm ...',
                        hintStyle: TextStyle(color: Colors.grey[500])),
                    onSubmitted: (value) {
                      FocusScope.of(context).requestFocus(FocusNode());
                      BlocProvider.of<SupplyBloc>(_blocContext).add(OnSearch(searchString: value, type: widget.type, selectedId: widget.selectedId));
                    },
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    _blocContext = context;
    return Container(child: getSearchBarUI());
  }

  @override
  void dispose() {
    _searchController.dispose();
    super.dispose();
  }
}
