Android 颤振条形码扫描结果

Android 颤振条形码扫描结果,android,flutter,dart,barcode-scanner,Android,Flutter,Dart,Barcode Scanner,我有一个飞行计划。在那个项目中,我有一个条形码扫描仪。扫描条形码时,我返回一个数字结果。在同一个项目中,我有一个本地JSON文件。在本地JSON文件中,我有一个名为“条形码”的字段,它包含一些产品的条形码编号。我想比较结果和“条形码”,如果有匹配,我想从JSON文件中获取记录。你知道怎么做吗 这是我的密码: import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_barcode_sc

我有一个飞行计划。在那个项目中,我有一个条形码扫描仪。扫描条形码时,我返回一个数字结果。在同一个项目中,我有一个本地JSON文件。在本地JSON文件中,我有一个名为“条形码”的字段,它包含一些产品的条形码编号。我想比较结果和“条形码”,如果有匹配,我想从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,
    );
  }
}


导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“包装:颤振条形码扫描仪/颤振条形码扫描仪.dart”;
导入“dart:async”显示未来;
导入“包:flatter/services.dart”显示根包;
导入“dart:convert”;
导入“包:flifter/services.dart”;
//忽略:驼峰\u案例\u类型
类barcodeReader扩展StatefulWidget{
_barcodeReaderState createState()=>\u barcodeReaderState();
}
//忽略:驼峰\u案例\u类型
类_barcodeReaderState扩展状态{
字符串_title='条形码扫描器';
字符串_result='单击扫描按钮开始扫描';
字符串_scanButtonLabel='Scan';
字符串_scanResult='(空结果)';
字符串_errorMessage='未知错误';
列出数据;
未来结果弧码;
未来结果AC;
Future\u scanCode()异步{
试一试{
_扫描结果=
等待条形码扫描仪扫描条形码(“000000”,“取消”,真);
设置状态(){
_结果=_scanResult;
});
}捕获(e){
_errorMessage='$_errorMessage$e';
设置状态(){
_结果=\u错误消息;
});
}
}
未来加载JSONDATA(整型索引,快照)异步{
var jsonText=await rootBundle.loadString('assets/csvjson_2son.json');
var mydata=JsonDecoder().convert(snapshot.data.toString());
setState(()=>data=json.decode(jsonText));
mydata[索引]['BARKOD']=resultBarcode;
mydata[索引]['ILAC ADI']=resultIlac;
if(resultBarcode==\u结果){
返回resultIlac;
}
}
@凌驾
void initState(){
super.initState();
这个.loadJsonData(0,数据);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
身高:90,
背景颜色:颜色(0xFF3EB16F),
标题:文本(“条形码扫描仪”),
标题:对,
textTheme:textTheme(
标题行6:TextStyle(fontSize:44,fontFamily:“天使”),
),
),
正文:中(
子项:文本(“$\u结果”),
),
floatingActionButton:floatingActionButton.extended(
图标:图标(Icons.scanner),
标签:文本(“$\u scanButtonLabel”),
按下按钮:\ u扫描码,
),
浮动ActionButtonLocation:浮动ActionButtonLocation.centerFloat,
);
}
}

要获得清晰的解决方案,您需要共享json文件的一部分。无论如何,在地图中,您可以检查密钥是否存在;(如果存在,则返回布尔值true)

检查映射是否包含值;(如果存在,则返回布尔值true)

注意:键是映射的字段名,值表示字段的值

   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'];
}
      });

我的json的一部分就是这样。但是我想把ILAC ADI字段带到屏幕上,如果它们相等的话,
{“BARKOD”:8699565643597,“ATC KODU”:“A01AD02”,“ATC ADI”:“Benzidamine”,“refereans\nESDEGER”:“refereans”,“ESDEGERI”:1,“ILAC ADI”:“TANTUM VERDE%0,15 120 ML GARGARA”,“ETKIN MADDE”:“BENZIDAMIN HCL”,“FIRMA ADI”:“CINAY KIMYA”,“BIRIM MIKTAR”:“0,15%,“BIRIM CINSI”:“G”,“AMBALAJ MIKTARI”:120,“RECETE”:“正常RECETE”,“KDV DAHIL PERAKENDE SATIS TL FIYATI”:“3,67”},
更新了评论
mydata[index]['BARKOD'] = resultBarcode;
mydata[index]['ILAC ADI'] = resultIlac;
     mydata.forEach((element) { 
        if(element['BARKOD']==_result)
{
return element['ILAC ADI'];
}
      });