我是新来的颤振,我正在遵循一个教程,显示如何搜索数据。我不能用我自己的例子来重现。我想知道如何从这个json数据中搜索ListView中的数据。
{
"success": "true",
"data": [
{
"id": 1,
"name": "football"
},
{
"id": 2,
"name": "rugby"
},
{
"id": 3,
"name": "basketball"
},
{
"id": 4,
"name": "hockey"
},
{
"id": 5,
"name": "tennis"
},
{
"id": 6,
"name": "golf"
}
]
}
使用此代码显示
if (snapshot.hasData) {
return ListView.builder(
itemCount: sports.games.length,
itemBuilder: (context, index) {
if (sports.games.length > 0) {
final x = sports.games[index];
final y = sports.games[index].id.toString();
return ListTile(
title: Text(y),
subtitle: Text(x.name),
);
}
},
);
}
},
首先,根据下面的回答,JSON文件将作为映射返回
未处理的异常:InternalLinkedHashMap
对于您的问题,以下是解决方案。首先,您需要创建一个这样的模型,可以放在单独的文件中,也可以放在同一个文件中
class Sports {
int id;
String name;
Sports({
this.id,
this.name,
});
factory Sports.fromJson(Map<String, dynamic> json) {
return Sports(id: json['id'], name: json['name']);
}
}
这里是main.dart
import 'package:aberdeen/model.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyApp> {
TextEditingController controller = new TextEditingController();
List<Sports> array = [];
List<Sports> _filtered = [];
List<Sports> _null_filtered = [];
String jsonTest =
'{"success": "true","data": [{"id": 1,"name": "football"},{"id": 2,"name": "rugby"},{"id": 3,"name": "basketball"},{"id": 4,"name": "hockey"},{"id": 5,"name": "tennis"},{"id": 6,"name": "golf"}]}';
void initState() {
super.initState();
test();
}
void _alterfilter(String query) {
List<Sports> dummySearchList = [];
dummySearchList.addAll(_filtered);
if (query.isNotEmpty) {
List<Sports> dummyListData = [];
dummySearchList.forEach((item) {
if (item.name.contains(query)) { //if you want to search it order by id you can change item.name.contains to item.id.contains
dummyListData.add(item);
}
});
setState(() {
_filtered.clear();
_filtered.addAll(dummyListData); //dummyListData will place all the data that match at your search bar
});
return;
} else {
setState(() {
_filtered.clear();
_filtered.addAll(_null_filtered); //_null_filtered will place all the data if search bar was empty after enter a words
});
}
}
Future<Sports> test() async {
Map<String, dynamic> tagObjsJson = json.decode(jsonTest);
List<dynamic> data = tagObjsJson["data"];
setState(() {
for (Map Data in data) {
array.add(Sports.fromJson(Data));
}
_filtered.addAll(array);
_null_filtered.addAll(array);
for (int a = 0; a < _filtered.length; a++) {
print(_filtered[a].name);
}
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Container(
alignment: Alignment.center,
child: Container(
margin: const EdgeInsets.only(top: 50),
width: 300,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
border: Border.all(
width: 1,
color: Color.fromRGBO(11, 189, 180, 1),
style: BorderStyle.solid)),
child: TextField(
decoration: InputDecoration(
hintText: 'Search your data',
contentPadding: EdgeInsets.all(15),
border: InputBorder.none),
controller: controller,
onChanged: (value) {
_alterfilter(value);
},
),
),
),
],
),
Expanded(
child: Container(
margin: const EdgeInsets.all(20),
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: _filtered.length,
itemBuilder: (context, index) {
if (array.length > 0) {
final x = _filtered[index];
final y = _filtered[index].id.toString();
return ListTile(
title: Text(y),
subtitle: Text(x.name),
);
}
},
),
))
],
),
),
));
}
}
对不起,如果我的英语很差,但是如果你感到困惑,请告诉我
问题内容: 我在徘徊自己是哪个组件最适合显示swing中的快速搜索结果。我想创建类似这样的内容,在用户可以输入文本的地方创建一个文本字段,在输入过程中,我将改善对数据库的后端快速搜索,并且希望在文本框下方显示数据,他将能够浏览结果,然后按输入将在表中显示结果。所以我的问题是,是否有任何组件已经具有此显示逻辑?还是不是,实现它的最佳方法是什么。 如果可以在桌面应用程序上进行,此搜索将是ajax在网络
问题内容: 我看到了有关搜索引擎和SEO的AngularJS应用程序两个问题: 1)自定义标签会怎样?搜索引擎会忽略这些标签中的全部内容吗?即假设我有 尽管位于自定义标签中仍会被索引? 2)有没有一种方法可以避免搜索引擎将{{}}编入索引的字面绑定?即 我知道我可以做类似的事情 但是,如果我想让搜寻器“看到”标题怎么办?服务器端渲染是唯一的解决方案吗? 问题答案: 2014年5月更新 Google
有没有办法从Firebase检索数据到一个Java应用程序? 我有一个Android应用程序,它将数据存储到一个Firebase数据库中,我需要在一个Java应用程序中读取这些数据。我在网上查了一下,但没有找到一个明确的答案。 //不是浏览器的URL,而是数据库上方的URL //这里我尝试引用数据库并在其中放入一个值
问题内容: 我在netbeans中创建了jtable,并在jtable中填充了数据库中的数据,但是我无法使用jtextfield在jtable中实现搜索选项。谁能指导我。谢谢 问题答案: 为了在表上搜索内容,必须将原始内容存储在某个变量中。在下面的示例中,我将表模型的初始值存储在向量中。 下面有两种实现方式:一种是在文本字段上键入内容后立即进行搜索,另一种则仅在单击按钮后进行搜索。 对于第一个,您
问题内容: 如何使用preg_match在数组中搜索? 例: 问题答案: 在这篇文章中,我将为您提供三种不同的方法来满足您的要求。 我实际上建议使用最后一个代码段,因为它最容易理解并且代码简洁。 如何查看数组中与我的正则表达式匹配的元素? 有专门用于此目的的功能。它将一个正则表达式作为第一个参数,并将一个数组作为第二个参数。 请参见以下示例: 输出 但是我只想获取指定组的值。怎么样? 与能解决清洁
重要的一点在这里: 当我运行这行(从VS代码运行iPhone模拟器)时,控制台上没有任何消息,调试会话结束,模拟器屏幕变为黑色,几秒钟后返回主屏幕。 我对所有这些都是新手,但我唯一的想法是:当我在控制台上打印时,我得到的是 闭包:({String phoneNumber,Duration timeout,int forceResendingToken,(AuthCredential)=>void