Journal Search

This commit is contained in:
Sewmina
2022-04-23 15:50:27 +05:30
parent 048ee4b668
commit 9f5ef1a7f1

View File

@@ -39,7 +39,9 @@ class _JournalPageState extends State<JournalPage>{
super.dispose(); super.dispose();
refreshStream?.close(); refreshStream?.close();
} }
bool searching =false;
TextEditingController searchController = TextEditingController();
FocusNode _focus = FocusNode();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@@ -52,7 +54,41 @@ class _JournalPageState extends State<JournalPage>{
label: Text("New Entry"), label: Text("New Entry"),
icon: Icon(Icons.add)), icon: Icon(Icons.add)),
appBar: AppBar( appBar: AppBar(
title: Row( title: (searching)
? Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
mainAxisSize: MainAxisSize.max,
children: [
Expanded(
child: TextField(
onChanged: (text) {
setState(() {});
},
controller: searchController,
focusNode: _focus,
decoration: InputDecoration(
filled: true,
),
),
),
InkWell(
onTap: () {
searching = false;
searchController.clear();
setState(() {});
},
child: Container(
margin: EdgeInsets.all(10),
child: Icon(Icons.cancel),
),
)
],
)
],
) :
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Row( Row(
@@ -80,6 +116,13 @@ class _JournalPageState extends State<JournalPage>{
}); });
},child: Container(margin:EdgeInsets.all(8),child: Icon(Icons.cancel))), },child: Container(margin:EdgeInsets.all(8),child: Icon(Icons.cancel))),
InkWell(onTap:(){
searching=true;
searchController.clear();
setState(() {
});
},child: Container(margin:EdgeInsets.all(8),child: Icon(Icons.search))),
if(!selecting)InkWell(onTap:(){setState(() { if(!selecting)InkWell(onTap:(){setState(() {
});},child: Container(margin: EdgeInsets.all(8), child: Icon(Icons.refresh),)) });},child: Container(margin: EdgeInsets.all(8), child: Icon(Icons.refresh),))
@@ -97,7 +140,20 @@ class _JournalPageState extends State<JournalPage>{
int charCount = '\n'.allMatches(User.journal[index].description ?? '').length * 50; int charCount = '\n'.allMatches(User.journal[index].description ?? '').length * 50;
charCount +=(User.journal[index].description ?? '').length; charCount +=(User.journal[index].description ?? '').length;
int maxCharCount = 100; int maxCharCount = 100;
return Container(
bool matchesSearch = false;
if(searching && searchController.text.isNotEmpty){
if(User.journal[index].title != null && User.journal[index].title!.toLowerCase().contains(searchController.text.toLowerCase())){
matchesSearch = true;
}
if((User.journal[index].description ?? '').toLowerCase().contains(searchController.text.toLowerCase())){
matchesSearch=true;
}
}else{
matchesSearch =true;
}
return (matchesSearch) ? Container(
child: InkWell( child: InkWell(
onTap: (){ onTap: (){
if(selecting){ if(selecting){
@@ -192,7 +248,7 @@ class _JournalPageState extends State<JournalPage>{
},child: Container(margin:EdgeInsets.all(8),child: FaIcon(FontAwesomeIcons.edit))) },child: Container(margin:EdgeInsets.all(8),child: FaIcon(FontAwesomeIcons.edit)))
], ],
), ),
)); )) : Container();
}), }),
), ),
); );