16
16
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
*/
18
18
19
+ import 'dart:developer' ;
20
+
19
21
import 'package:flutter/material.dart' ;
20
22
import 'package:flutter/services.dart' ;
21
23
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart' ;
22
24
import 'package:flutter_gen/gen_l10n/app_localizations.dart' ;
23
25
import 'package:flutter_typeahead/flutter_typeahead.dart' ;
26
+ //import 'package:font_awesome_flutter/font_awesome_flutter.dart';
24
27
import 'package:provider/provider.dart' ;
25
28
import 'package:wger/helpers/consts.dart' ;
26
29
import 'package:wger/helpers/platform.dart' ;
27
30
import 'package:wger/helpers/ui.dart' ;
28
31
import 'package:wger/providers/nutrition.dart' ;
29
32
import 'package:wger/widgets/core/core.dart' ;
30
33
34
+ import 'package:flutter_zxing/flutter_zxing.dart' ;
35
+
36
+ class ScanReader extends StatelessWidget {
37
+ String ? scannedr;
38
+
39
+ @override
40
+ Widget build (BuildContext context) {
41
+ return Scaffold (
42
+ body: ReaderWidget (
43
+ onScan: (result) {
44
+ debugPrint ('Reader widget res : => ' );
45
+ scannedr = result.text;
46
+ debugPrint (scannedr);
47
+ Navigator .pop (context, scannedr);
48
+ },
49
+ ),
50
+ );
51
+ }
52
+ }
53
+
31
54
class IngredientTypeahead extends StatefulWidget {
32
55
final TextEditingController _ingredientController;
33
56
final TextEditingController _ingredientIdController;
34
57
35
58
String ? barcode = '' ;
59
+ Code ? result;
60
+
36
61
late final bool ? test;
37
62
final bool showScanner;
38
63
@@ -48,28 +73,24 @@ class IngredientTypeahead extends StatefulWidget {
48
73
_IngredientTypeaheadState createState () => _IngredientTypeaheadState ();
49
74
}
50
75
51
- Future <String > scanBarcode (BuildContext context) async {
52
- String barcode;
53
- try {
54
- barcode = await FlutterBarcodeScanner .scanBarcode (
55
- '#ff6666' ,
56
- AppLocalizations .of (context).close,
57
- true ,
58
- ScanMode .BARCODE ,
59
- );
76
+ class _IngredientTypeaheadState extends State <IngredientTypeahead > {
77
+ var _searchEnglish = true ;
60
78
61
- if (barcode.compareTo ('-1' ) == 0 ) {
79
+ Future <String > _readerscan (BuildContext context) async {
80
+ String barcode;
81
+ try {
82
+ barcode =
83
+ await Navigator .of (context).push (MaterialPageRoute (builder: (context) => ScanReader ()));
84
+
85
+ if (barcode.compareTo ('-1' ) == 0 ) {
86
+ return '' ;
87
+ }
88
+ } on PlatformException {
62
89
return '' ;
63
90
}
64
- } on PlatformException {
65
- return '' ;
66
- }
67
91
68
- return barcode;
69
- }
70
-
71
- class _IngredientTypeaheadState extends State <IngredientTypeahead > {
72
- var _searchEnglish = true ;
92
+ return barcode;
93
+ }
73
94
74
95
@override
75
96
Widget build (BuildContext context) {
@@ -136,7 +157,8 @@ class _IngredientTypeaheadState extends State<IngredientTypeahead> {
136
157
onPressed: () async {
137
158
try {
138
159
if (! widget.test! ) {
139
- widget.barcode = await scanBarcode (context);
160
+ // using navigation to call Reader Widget and return context(scan result)
161
+ widget.barcode = await _readerscan (context);
140
162
}
141
163
142
164
if (widget.barcode! .isNotEmpty) {
@@ -194,6 +216,7 @@ class _IngredientTypeaheadState extends State<IngredientTypeahead> {
194
216
}
195
217
}
196
218
} catch (e) {
219
+ debugPrint ('scanner did not fire!! ' );
197
220
showErrorDialog (e, context);
198
221
}
199
222
},
0 commit comments