我有一个 Flutter 项目。在那个项目中,我有一个条形码扫描仪。当我扫描条形码时,我返回一个数字结果。在同一个项目中,我有一个本地 JSON 文件。在本地 JSON 文件中,我有一个名为“BARCODE”的字段,它包含一些产品的条形码编号。我想比较结果和“BARCODE”,如果匹配,我想从我的 JSON 文件中获取记录。知道怎么做吗?
这是我的代码:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
import 'dart:convert';
import 'package:flutter/services.dart';
// ignore: camel_case_types
class barcodeReader extends StatefulWidget {
_barcodeReaderState createState() => _barcodeReaderState();
}
// ignore: camel_case_types
class _barcodeReaderState extends State<barcodeReader> {
String _title = 'Barcode Scanner';
String _result = 'Click Scan button for start to scan';
String _scanButtonLabel = 'Scan';
String _scanResult = '(Empty result)';
String _errorMessage = 'Unknown error';
List data;
Future<String> resultBarcode;
Future<String> resultIlac;
Future _scanCode() async {
try {
_scanResult =
await FlutterBarcodeScanner.scanBarcode("#000000", "Cancel", true);
setState(() {
_result = _scanResult;
});
} catch (e) {
_errorMessage = '$_errorMessage $e';
setState(() {
_result = _errorMessage;
});
}
}
Future<String> loadJsonData(int index, snapshot) async {
var jsonText = await rootBundle.loadString('assets/csvjson_2son.json');
var mydata = JsonDecoder().convert(snapshot.data.toString());
setState(() => data = json.decode(jsonText));
mydata[index]['BARKOD'] = resultBarcode;
mydata[index]['ILAC ADI'] = resultIlac;
if (resultBarcode == _result) {
return resultIlac;
}
}
@override
void initState() {
super.initState();
this.loadJsonData(0, data);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
toolbarHeight: 90,
backgroundColor: Color(0xFF3EB16F),
title: Text("Barcode Scanner"),
centerTitle: true,
textTheme: TextTheme(
headline6: TextStyle(fontSize: 44, fontFamily: "Angel"),
),
),
body: Center(
child: Text('$_result'),
),
floatingActionButton: FloatingActionButton.extended(
icon: Icon(Icons.scanner),
label: Text('$_scanButtonLabel'),
onPressed: _scanCode,
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
);
}
}
答案 0 :(得分:0)
要获得明确的解决方案,您需要共享部分 json 文件。无论如何,在地图中,您可以检查键是否存在;(如果存在,则返回 bool 值 true)
body.containsKey("somebarcodenumber");// push your key
检查地图是否包含值; (如果存在则返回 bool 值 true)
bool exists ;
exists = body.containsValue("someilacname");
注意:key是map的字段名,value代表一个字段的值。
Map body = {"locale":"tr","conversationId":"123456ayx5","binNumber":"$binNumber"} ;
“locale”是一个键,“tr”是它的值。
更新: 尝试获取字段值时您犯了错误。您尝试更新 json 文件值。
mydata[index]['BARKOD'] = resultBarcode;
mydata[index]['ILAC ADI'] = resultIlac;
使用它;
mydata.forEach((element) {
if(element['BARKOD']==_result)
{
return element['ILAC ADI'];
}
});