大家好,我有一个用户应用程序和一个管理应用程序,在该用户应用程序中,我给了一个名为promocode的选项,为此我在数据库中创建了2个promocodes。管理员应用程式中的promocode发生错误,有人可以帮忙吗。
这是我的代码:
if (passengers != null && passengers != 0) {
total = ticketprice * passengers;
}
if (promoCode != null && promoCode.isNotEmpty) {
_firestore
.collection('promo_codes')
.where('promo_code', isEqualTo: promoCode)
.getDocuments()
.then((QuerySnapshot data) {
if (data != null && data.documents.length > 0) {
var documentData = data.documents[0];
if (documentData['price_reduction'] != null) {
setState(() {
total -= int.parse(documentData['price_reduction']);
});
} else if (documentData['percentage_reduction'] != null) {
setState(() {
total -= (total * int.parse(documentData['percentage_reduction']));
});
}
setState(() {
grandTotal = total;
});
}
});
}
我只为促销代码添加了我的主要代码,如果有人想通过我将共享整个代码。
这是我的错误:
════════ Exception caught by foundation library ════════════════════════════════════════════════════
The following FormatException was thrown while dispatching notifications for TextEditingController:
Invalid number (at character 1)
^
When the exception was thrown, this was the stack:
#0 int._throwFormatException (dart:core-patch/integers_patch.dart:131:7)
#1 int.parse (dart:core-patch/integers_patch.dart:55:14)
#2 _MyAppState.testListener.<anonymous closure> (package:fire/main.dart:136:24)
#3 State.setState (package:flutter/src/widgets/framework.dart:1148:30)
#4 _MyAppState.testListener (package:fire/main.dart:130:5)
...
The TextEditingController sending notification was: TextEditingController#1dc24(TextEditingValue(text: ┤├, selection: TextSelection(baseOffset: 0, extentOffset: 0, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1)))
════════════════════════════════════════════════════════════════════════════════════════════════════
E/flutter (14220): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'String' is not a subtype of type 'num'
E/flutter (14220): #0 _MyAppState._onChanged.<anonymous closure>.<anonymous closure> (package:fire/main.dart:109:36)
E/flutter (14220): #1 State.setState (package:flutter/src/widgets/framework.dart:1148:30)
E/flutter (14220): #2 _MyAppState._onChanged.<anonymous closure> (package:fire/main.dart:108:13)
E/flutter (14220): #3 _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter (14220): #4 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (14220): #5 _FutureListener.handleValue (dart:async/future_impl.dart:140:18)
E/flutter (14220): #6 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (14220): #7 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (14220): #8 Future._completeWithValue (dart:async/future_impl.dart:526:5)
E/flutter (14220): #9 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:33:15)
E/flutter (14220): #10 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:291:13)
E/flutter (14220): #11 Query.getDocuments (package:cloud_firestore/src/query.dart)
E/flutter (14220): <asynchronous suspension>
E/flutter (14220): #12 _MyAppState._onChanged (package:fire/main.dart:102:12)
E/flutter (14220): #13 _MyAppState.build.<anonymous closure> (package:fire/main.dart:559:33)
E/flutter (14220): #14 EditableTextState._formatAndSetValue (package:flutter/src/widgets/editable_text.dart:1607:14)
E/flutter (14220): #15 EditableTextState.updateEditingValue (package:flutter/src/widgets/editable_text.dart:1208:5)
E/flutter (14220): #16 TextInput._handleTextInputInvocation (package:flutter/src/services/text_input.dart:962:36)
E/flutter (14220): #17 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:402:55)
E/flutter (14220): #18 MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:370:54)
E/flutter (14220): #19 _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:200:33)
E/flutter (14220): #20 _invoke3.<anonymous closure> (dart:ui/hooks.dart:303:15)
E/flutter (14220): #21 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (14220): #22 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (14220): #23 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (14220): #24 _invoke3 (dart:ui/hooks.dart:302:10)
E/flutter (14220): #25 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)
E/flutter (14220):
E/flutter (14220): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'String' is not a subtype of type 'num'
E/flutter (14220): #0 _MyAppState._onChanged.<anonymous closure>.<anonymous closure> (package:fire/main.dart:109:36)
E/flutter (14220): #1 State.setState (package:flutter/src/widgets/framework.dart:1148:30)
E/flutter (14220): #2 _MyAppState._onChanged.<anonymous closure> (package:fire/main.dart:108:13)
E/flutter (14220): #3 _rootRunUnary (dart:async/zone.dart:1134:38)
E/flutter (14220): #4 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (14220): #5 _FutureListener.handleValue (dart:async/future_impl.dart:140:18)
E/flutter (14220): #6 Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:682:45)
E/flutter (14220): #7 Future._propagateToListeners (dart:async/future_impl.dart:711:32)
E/flutter (14220): #8 Future._completeWithValue (dart:async/future_impl.dart:526:5)
E/flutter (14220): #9 _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:33:15)
E/flutter (14220): #10 _completeOnAsyncReturn (dart:async-patch/async_patch.dart:291:13)
E/flutter (14220): #11 Query.getDocuments (package:cloud_firestore/src/query.dart)
E/flutter (14220): <asynchronous suspension>
E/flutter (14220): #12 _MyAppState._onChanged (package:fire/main.dart:102:12)
E/flutter (14220): #13 _MyAppState.build.<anonymous closure> (package:fire/main.dart:559:33)
E/flutter (14220): #14 EditableTextState._formatAndSetValue (package:flutter/src/widgets/editable_text.dart:1607:14)
E/flutter (14220): #15 EditableTextState.updateEditingValue (package:flutter/src/widgets/editable_text.dart:1208:5)
E/flutter (14220): #16 TextInput._handleTextInputInvocation (package:flutter/src/services/text_input.dart:962:36)
E/flutter (14220): #17 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:402:55)
E/flutter (14220): #18 MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:370:54)
E/flutter (14220): #19 _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binding.dart:200:33)
E/flutter (14220): #20 _invoke3.<anonymous closure> (dart:ui/hooks.dart:303:15)
E/flutter (14220): #21 _rootRun (dart:async/zone.dart:1126:13)
E/flutter (14220): #22 _CustomZone.run (dart:async/zone.dart:1023:19)
E/flutter (14220): #23 _CustomZone.runGuarded (dart:async/zone.dart:925:7)
E/flutter (14220): #24 _invoke3 (dart:ui/hooks.dart:302:10)
E/flutter (14220): #25 _dispatchPlatformMessage (dart:ui/hooks.dart:162:5)
E/flutter (14220):
I/flutter (14220): false
I/chatty (14220): uid=10288(m20zero.fire) Thread-3 identical 2 lines
I/flutter (14220): false
答案 0 :(得分:0)
我将从使用
开始int.tryParse(documentData['price_reduction']);
甚至
int.tryParse(documentData['price_reduction']) ?? 0;
代替
int.parse(documentData['price_reduction']);
也许这将为您解决这个问题,您可以从那里开始。