android - 使用本地 JSON 数据搜索 ListView
问题描述
我的本地项目中有一个 JSON 文件。我用它来列出数据。现在我正在尝试对这些数据进行搜索。我的计划是制作一个搜索栏并从我的本地 json 文件中获取数据。当我输入药品名称时,必须打印相关记录。
知道怎么做吗?
我的代码是这样的:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:medicine_reminder/src/ui/homepage/homepage.dart';
class JsonPage extends StatefulWidget {
@override
_JsonPageState createState() => _JsonPageState();
}
class _JsonPageState extends State<JsonPage> {
List data;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
toolbarHeight: 90,
backgroundColor: Color(0xFF3EB16F),
title: Text("Medicine List"),
centerTitle: true,
textTheme: TextTheme(
headline6: TextStyle(fontSize: 44, fontFamily: "Angel"),
),
),
body: new Container(
child: new Center(
child: new FutureBuilder(
future: DefaultAssetBundle.of(context)
.loadString('assets/csvjson_2son.json'),
builder: (context, snapshot) {
var mydata = JsonDecoder().convert(snapshot.data.toString());
return new ListView.builder(
itemBuilder: (BuildContext context, int index) {
return new Card(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Text(
"" + mydata[index]['ILAC ADI'],
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.deepOrange),
),
new Text("Etken Madde: " + mydata[index]['ETKIN MADDE']),
new Text("ATC Adı: " + mydata[index]['ATC ADI']),
new Text("ATC Kodu: " + mydata[index]['ATC KODU']),
new Text("Barkod: " + mydata[index]['BARKOD'].toString()),
new Text("Firma Adı: " + mydata[index]['FIRMA ADI']),
new Text("Referans Eşdeğeri: " +
mydata[index]['REFERANS \nESDEGER']),
new Text(
"Eşdeğeri: " + mydata[index]['ESDEGERI'].toString()),
new Text("Ambalaj Miktarı: " +
mydata[index]['AMBALAJ MIKTARI'].toString()),
new Text("Reçete: " + mydata[index]['RECETE']),
new Text("Satış Fiyatı: " +
mydata[index]['KDV DAHIL PERAKENDE SATIS TL FIYATI']
.toString()),
],
));
});
},
)),
),
floatingActionButton: Stack(
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 15),
child: Align(
heightFactor: 13.6,
alignment: Alignment.topLeft,
child: FloatingActionButton(
backgroundColor: Colors.transparent,
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HomePage(),
));
},
child: Icon(Icons.arrow_back),
),
),
),
],
));
}
}
解决方案
推荐阅读
- azure-devops - Azure DevOps AWS CloudFormation 创建/更新堆栈任务 - 失败“堆栈不存在”
- oracle - 在 Oracle 的过程中使用配置表中的值
- python - Python:如何在数据框中合并具有相同名称的“Ocode”或“Ccode”的行
- php - 初学者:将 html 元素中的 php 变量作为值输出
- python - 使用 CuPy 在 GPU 集群上进行百分比计算
- javascript - 如何在内部使用 javascript 作为语言链接 .js 文件中的 .txt 文件?
- javascript - 使用 AJAX 上传文件在 Django 中不起作用
- javascript - 如何让这个弹出窗口在前面?
- azure-synapse - 用于合并到 TSQL 的 Azure 突触合并语法错误
- r - 如何找到来自同一节点的两条边?