Flutter 的条码扫描仪结果

时间:2021-05-23 18:45:13

标签: android flutter dart barcode-scanner

我有一个 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,
    );
  }
}


1 个答案:

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