Как проверить номер отсканированного штрих-кода с номером штрих-кода моего продукта во флаттере - PullRequest
0 голосов
/ 09 апреля 2019

Хочу сделать систему управления запасами с флаттером. Я хочу отсканировать штрих-код на моем телефоне, и, если он совпадает со штрих-кодом моего продукта (который был в значении остальных API и JSON), он возвращает мне «Да, здесь ваш продукт и возвращает название этого продукта, цену и т. Д.

Я могу добраться до остальных API с помощью этого кода:

int _stokSayisi;
int get stokSayisi => _stokSayisi;

List<Stok> _stokListesi;
List<Stok> get stokListesi => _stokListesi; 

Future<List<Stok>> getStok() async {
  final String token = token_manager.token;

  return await http.get("http://192.168.1.29:7070/api/v2/Items", headers: {
    HttpHeaders.authorizationHeader: "Bearer $token"
  }).then((response) {

    var dataList = json.decode(response.body)["Data"] as List;
    print("Stok Sayısı -> "+ dataList.length.toString());
    _stokSayisi = dataList.length;
    _stokListesi = dataList.map<Stok>((json) => Stok.fromJson(json)).toList();


  });
}

и я могу получить номер штрих-кода продукта следующим образом (getStok.dart):

Widget createListView(BuildContext context, AsyncSnapshot snapshot) {
  return new ListView.builder(
    itemCount: get_stok.stokSayisi,
    itemBuilder: (BuildContext context, int index) {
      return new Column(
        children: <Widget>[
          new ListTile(
            title:
                new Text(get_stok.stokListesi[index].stokTemelBilgi.stokAdi),
            subtitle:
                new Text(get_stok.stokListesi[index].stokTemelBilgi.barkodNum),//Here is my barcodeNumber value.But ı cannot understand how to validate this value with scanned code value//.
          )
        ],
      );
    },
  );
}

Вот мой BarCodeScanner.dart: (я хочу проверить значение _reader с моим классом getStok.dart, который я объявляю в скобках комментария.)

class _BarcodeScanState extends State<BarcodeScan> {
  String _reader = '';
  Permission permission = Permission.Camera;

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
          appBar: new AppBar(
            title: new Text("Stok Barkod Okuma"),
            backgroundColor: Colors.redAccent,
          ),
          body: new Center(
              child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              /*new Padding(
              padding: const EdgeInsets.symmetric(vertical: 10.0),
            ),*/
              new RaisedButton(
                //splashColor: Colors.pinkAccent,
                color: Colors.black,
                child: new Text(
                  "BARKOD OKUT",
                  style: new TextStyle(fontSize: 30.0, color: Colors.white),
                ),
                onPressed: scan,
              ),
              new Padding(
                padding: const EdgeInsets.symmetric(vertical: 10.0),
              ),
              new Text('$_reader',
                  softWrap: true,
                  style: new TextStyle(fontSize: 30.0, color: Colors.blue))
            ],
          ))),
    );
  }



  requestPermission() async {
    void result = await SimplePermissions.requestPermission(permission);
  }

  scan() async {
    try {
      String reader = await BarcodeScanner.scan();
      if (!mounted) {
        return;
      }
      setState(() {
        _reader = reader;
      });
    } on PlatformException catch (e) {
      if (e.code == BarcodeScanner.CameraAccessDenied) {
        requestPermission();
      } else {
        setState(() {
          _reader = "unknown error $e";
        });
      }
    } on FormatException {
      setState(() {
        _reader = "User exit without scanning";
      });
    }
  }
}
...