import 'package:farm_tpf/utils/const_color.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'bloc/plot_bloc.dart'; class WidgetSearch extends StatefulWidget { @override _WidgetSearchState createState() => _WidgetSearchState(); } class _WidgetSearchState extends State { 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: 8, right: 8, top: 0, bottom: 4), child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.only(right: 8, top: 0, 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: Icon( Icons.search, size: 30, ), onPressed: () { FocusScope.of(context).requestFocus(FocusNode()); BlocProvider.of(_blocContext).add( OnSearch( searchString: _searchController.text)); }), hintText: 'Tìm theo mã, tên lô', hintStyle: TextStyle(color: Colors.grey[500])), onSubmitted: (value) { FocusScope.of(context).requestFocus(FocusNode()); BlocProvider.of(_blocContext) .add(OnSearch(searchString: value)); }, ), ), ), ), ), ], ), ); } @override Widget build(BuildContext context) { _blocContext = context; return Container(child: getSearchBarUI()); } @override void dispose() { _searchController.dispose(); super.dispose(); } }