首页 > 解决方案 > 使用本地 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),
                ),
              ),
            ),
          ],
        ));
  }
}

标签: androidjsonflutterlistviewdart

解决方案


推荐阅读