【发布时间】:2021-07-12 05:18:47
【问题描述】:
我已经从我的 JSON(本地)文件在 FutureBuilder 中创建了 ListView.builder。我还创建了一个 TextField 小部件,使其成为我的 ListView.builder 的搜索栏。但我不知道如何在我的 TextField 和 ListView.builder 中实现搜索栏语法。
这是我的 FutureBuilder 小部件:
FutureBuilder(
future: _isInit ? fetchDoa(context) : Future(null),
builder: (context, _) {
if (doaList != null) {
return ListView.builder(
itemCount: doaList.length,
itemBuilder: (BuildContext context, int index) {
Doa doa = doaList[index];
return _itemList(index);
},
);
} else {
CircularProgressIndicator();
}
return CircularProgressIndicator();
}),
这里是 _itemList(index) :
_itemList(index) {
Doa doa = doaList[index];
return Container(
margin: EdgeInsets.symmetric(horizontal: 24),
child: ListTile(
title: Text(doa.judul,
style: TextStyle(fontFamily: "Poppins", fontSize: 16)),
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (BuildContext context) => DetailDoa(doa: doa)));
},
trailing: Icon(
Icons.arrow_forward_ios_rounded,
color: Colors.teal,
)));
}
搜索栏与 FutureBuilder 是分开的,因为我在项目中使用了 Stack。这是我想用作搜索栏的 TextField:
_searchBar() {
return SingleChildScrollView(
child: Center(
child: Container(
margin: EdgeInsets.only(top: 60),
width: context.widthPct(.8),
height: context.widthPct(.8) / 6,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(34),
color: Colors.grey[200],
),
child: Container(
child: Theme(
data: new ThemeData(
primaryColor: Colors.grey[200],
),
child: TextField(
onSubmitted: (String str) {
str = str.toLowerCase();
setState(() {});
},
autofocus: false,
style:
TextStyle(color: Colors.grey[700], fontFamily: "Poppins"),
cursorColor: Colors.white,
decoration: InputDecoration(
suffixIcon: Icon(
Icons.search,
color: Colors.grey[700],
),
contentPadding: EdgeInsets.fromLTRB(24, 16, 24, 16),
hintText: "Cari doa dulu yuk",
hintStyle: TextStyle(
color: Colors.grey[700], fontFamily: "Poppins"),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(200),
borderSide: new BorderSide(color: Colors.grey[200]))),
),
))),
),
);
}
这是我的应用程序的预览:
非常感谢您的帮助:)
【问题讨论】:
-
如何使用
regex进行搜索 -
@ProblematicDude 怎么用???很抱歉,因为我还是 Flutter 的新手 :(