import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart'; import 'package:kumi_popup_window/kumi_popup_window.dart'; import 'package:stadtbote/model/task_info.dart'; import 'package:stadtbote/tools/util.dart'; KumiPopupWindow showScanBarcodesPopup(BuildContext context, TaskInfo taskInfo, Function() onFinished) { return showPopupWindow( context, //childSize:Size(240, MediaQuery.of(context).size.width * 0.8), gravity: KumiPopupGravity.center, //curve: Curves.elasticOut, bgColor: Colors.grey.withOpacity(0.5), clickOutDismiss: true, clickBackDismiss: true, customAnimation: false, customPop: false, customPage: false, // targetRenderBox: (btnKey.currentContext.findRenderObject() as RenderBox), //needSafeDisplay: true, underStatusBar: false, underAppBar: false, //offsetX: -180, //offsetY: 50, duration: const Duration(milliseconds: 200), onShowStart: (pop) {}, onShowFinish: (pop) {}, onDismissStart: (pop) {}, onDismissFinish: (pop) {}, onClickOut: (pop) {}, onClickBack: (pop) {}, childFun: (pop) { List scannedBarcodes = []; final ValueNotifier> scannedBarcodeWidgetsNotifier = ValueNotifier>([]); List createBarcodeWidgets() { List barcodeWidgets = []; for(var barcode in scannedBarcodes) { barcodeWidgets.add(Container( height: 20, child: Center(child: Text(barcode)), )); } return barcodeWidgets; } void scanBarcode() async { String barcodeScanResult; try { barcodeScanResult = await FlutterBarcodeScanner.scanBarcode('#ff6666', 'Abbrechen', true, ScanMode.QR); scannedBarcodes.add(barcodeScanResult); var barcodeWidgets = createBarcodeWidgets(); scannedBarcodeWidgetsNotifier.value = barcodeWidgets; } on PlatformException { barcodeScanResult = 'Failed to get platform version.'; } } return SizedBox( key: GlobalKey(), height: 340, width: MediaQuery.of(context).size.width * 0.8, child: Container( height: 100, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.white, border: Border.all( color: Colors.grey, width: 0.5, ), ), child: Padding( padding: const EdgeInsets.all(35.0), child: Column( children: [ const Text('Gescannte Barcodes'), const SizedBox(height: 20), Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), color: Colors.white, border: Border.all( color: Colors.grey, width: 0.5, ), ), height: 100, child: ValueListenableBuilder>( valueListenable: scannedBarcodeWidgetsNotifier, builder: (context, value, child) { return ListView( padding: const EdgeInsets.all(8), children: value ); }, ), ), const SizedBox(height: 20), getDefaultButton('Hinzufügen', buttonHeight: 50, () => { scanBarcode() }), getDefaultButton('Übernehmen', buttonHeight: 50, () => { onFinished() }) ], ), ), )); }, ); } /* */