From 6df6acbac586224ee2d79bf53ca1a3e1edf03bfd Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Fri, 5 Jun 2020 20:27:15 +0530 Subject: Adds clear input button --- lib/components/SearchableAppList.dart | 53 +++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/components/SearchableAppList.dart b/lib/components/SearchableAppList.dart index c939845..37da43d 100644 --- a/lib/components/SearchableAppList.dart +++ b/lib/components/SearchableAppList.dart @@ -4,10 +4,22 @@ import 'package:device_apps/device_apps.dart'; import 'AppList.dart'; class _SearchableAppListState extends State { - String _searchTerm = ''; + final _inputController = TextEditingController(); - void onInput(String str) { - setState(() { _searchTerm = str; }); + void initState() { + super.initState(); + _inputController.addListener(() { + + }); + } + + void dispose() { + _inputController.dispose(); + super.dispose(); + } + + void reset() { + _inputController.clear(); } int _appSorter(Application a, Application b) { @@ -15,8 +27,14 @@ class _SearchableAppListState extends State { } bool _filterApp(Application a) { - return a.appName.toLowerCase().contains(_searchTerm.toLowerCase()) || - a.packageName.toLowerCase().contains(_searchTerm.toLowerCase()); + var searchTerm = _inputController.text; + return a.appName.toLowerCase().contains(searchTerm.toLowerCase()) || + a.packageName.toLowerCase().contains(searchTerm.toLowerCase()); + } + + Widget getIcon(IconData icon, { Color color }) { + var inputIconSize = 16.0; + return Icon(icon, color: color, size: inputIconSize); } @override @@ -27,13 +45,24 @@ class _SearchableAppListState extends State { children: [ Container( height: 30, - child: TextField( - onChanged: onInput, - decoration: InputDecoration( - prefixStyle: TextStyle(color: Color(0xFF888888)), - hintStyle: TextStyle(color: Color(0xFFD8DEE9)), - hintText: 'Search', - ), + child: Align( + alignment: Alignment.topRight, + child: TextField( + //onChanged: onInput, + enableSuggestions: false, + controller: _inputController, + decoration: InputDecoration( + contentPadding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 8.0), + //prefix: Container(padding: , child: Text('')), + //prefixStyle: TextStyle(color: theme.primaryColor), + hintStyle: TextStyle(color: Color(0x88D8DEE9)), + hintText: 'Search', + suffix: IconButton( + icon: getIcon(Icons.close, color: Colors.red[400]), + onPressed: reset, + ), + ), + ) ), ), Expanded(child: FutureBuilder( -- cgit v1.3.1