import 'package:farm_tpf/utils/const_color.dart'; import 'package:flutter/material.dart'; class SearchWidget extends StatefulWidget { final Function(String) searchPressed; SearchWidget({@required this.searchPressed}); @override _SearchWidgetState createState() => _SearchWidgetState(); } class _SearchWidgetState 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: 4, bottom: 4), child: Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.only(right: 8, top: 8, bottom: 0), child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: const BorderRadius.all( Radius.circular(38.0), ), boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.2), offset: const Offset(0, 2), blurRadius: 8.0), ], ), 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: COLOR_CONST.GRAY1, decoration: InputDecoration( border: InputBorder.none, hintText: 'Tìm kiếm ...', ), onSubmitted: widget.searchPressed, ), ), ), ), ), ], ), ); } @override Widget build(BuildContext context) { _blocContext = context; return Container(child: getSearchBarUI()); } @override void dispose() { _searchController.dispose(); super.dispose(); } }