Firebase 未处理的异常:类型';字符串';不是类型为';num';

Firebase 未处理的异常:类型';字符串';不是类型为';num';,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,大家好,我有一个用户应用程序和管理员应用程序,在用户应用程序中,我提供了一个名为promocode的选项,为此我在数据库中创建了两个promocodes。当我应用这些程序时,它工作正常,但当我从管理员应用程序添加新的promocode时,它出现了一个错误。有人能帮助我吗 这是我的密码: if (passengers != null && passengers != 0) { total = ticketprice * passengers; } if

大家好,我有一个用户应用程序和管理员应用程序,在用户应用程序中,我提供了一个名为promocode的选项,为此我在数据库中创建了两个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;
          });
        }
      });
    }
我只添加了promocode的主代码,如果有人想查看,我将共享整个代码

这是我的错误:

════════ 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
════════ 基金会例外════════════════════════════════════════════════════
为TextEditingController发送通知时引发以下FormatException:
无效数字(在字符1处)
^
引发异常时,这是堆栈:
#0 int.\u throwFormatException(dart:core patch/integers\u patch.dart:131:7)
#1 int.parse(dart:core patch/integers\u patch.dart:55:14)
#2_MyAppState.testListener。(包装:消防/主要。省道:136:24)
#3 State.setState(包:flatter/src/widgets/framework.dart:1148:30)
#4_MyAppState.testListener(包:fire/main.dart:130:5)
...
发送通知的TextEditingController为:TextEditingController#1dc24(TextEditingValue(文本:┤├, 选择:TextSelection(baseOffset:0,extendtoffset:0,affinity:textfaffinity.down,isDirectional:false),组合:TextRange(开始:-1,结束:-1)))
════════════════════════════════════════════════════════════════════════════════════════════════════
E/flatter(14220):[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:类型“String”不是类型“num”的子类型
E/颤振(14220):#0#MyAppState.#一旦更改。。(包装:消防/主要。省道:109:36)
E/flatter(14220):#1 State.setState(包:flatter/src/widgets/framework.dart:1148:30)
E/颤振(14220):#2#MyAppState.#一次更改。(包装:消防/主要。省道:108:13)
E/颤振(14220):#3 RootRunnary(dart:async/zone.dart:1134:38)
E/flatter(14220):#4_CustomZone.runUnary(dart:async/zone.dart:1031:19)
E/flatter(14220):#5 FutureListener.handleValue(dart:async/future_impl.dart:140:18)
E/flatter(14220):#6 Future._-propagateToListeners.handleValueCallback(dart:async/Future_-impl.dart:682:45)
E/flatter(14220):#7未来。(dart:async/Future\u impl.dart:711:32)
E/颤振(14220):#8未来。_完成值(dart:async/Future_impl.dart:526:5)
E/flatter(14220):#9 AsyncAwaitCompleter.complete(dart:async patch/async patch.dart:33:15)
E/颤振(14220):#10#完成同步返回(dart:async patch/async patch.dart:291:13)
E/flatter(14220):#11 Query.getDocuments(包:cloud_firestore/src/Query.dart)
E/颤振(14220):
E/颤振(14220):#12(我的应用状态.)一旦改变(包:火/主。dart:102:12)
E/颤振(14220):#13_MyAppState.build。(包装:消防/主要。省道:559:33)
E/flatter(14220):#14 EditableTextState.(格式和设置值(包:flatter/src/widgets/EditableText.dart:1607:14)
E/flatter(14220):#15 EditableTextState.updateEditingValue(包:flatter/src/widgets/EditableText.dart:1208:5)
电子/颤振(14220):#16文本输入。#手工输入职业(包:颤振/src/services/text#u输入。dart:962:36)
电子/颤振(14220):#17方法频道。_handleAsMethodCall(套餐:颤振/src/services/platform_频道。dart:402:55)
E/颤振(14220):#18 MethodChannel.setMethodCallHandler。(包装:颤振/src/服务/平台通道。dart:370:54)
E/flatter(14220):#19_DefaultBinaryMessenger.handlePlatformMessage(包:flatter/src/services/binding.dart:200:33)
E/颤振(14220):20。(省道:用户界面/挂钩。省道:303:15)
E/颤振(14220):#21 rootRun(dart:async/zone.dart:1126:13)
E/flatter(14220):#22 _CustomZone.run(dart:async/zone.dart:1023:19)
E/颤振(14220):#23 CustomZone.runguard(dart:async/zone.dart:925:7)
E/颤振(14220):#24 _调用3(省道:ui/挂钩。省道:302:10)
E/flatter(14220):#25 dispatchPlatformMessage(dart:ui/hooks.dart:162:5)
E/颤振(14220):
E/flatter(14220):[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:类型“String”不是类型“num”的子类型
E/颤振(14220):#0#MyAppState.#一旦更改。。(包装:消防/主要。省道:109:36)
E/flatter(14220):#1 State.setState(包:flatter/src/widgets/framework.dart:1148:30)
E/颤振(14220):#2#MyAppState.#一次更改。(包装:消防/主要。省道:108:13)
E/颤振(14220):#3 RootRunnary(dart:async/zone.dart:1134:38)
E/flatter(14220):#4_CustomZone.runUnary(dart:async/zone.dart:1031:19)
E/flatter(14220):#5 FutureListener.handleValue(dart:async/future_impl.dart:140:18)
E/flatter(14220):#6 Future._-propagateToListeners.handleValueCallback(dart:async/Future_-impl.dart:682:45)
E/flatter(14220):#7未来。(dart:async/Future\u impl.dart:711:32)
E/颤振(14220):#8未来。_完成值(dart:async/Future_impl.dart:526:5)
E/flatter(14220):#9 AsyncAwaitCompleter.complete(dart:async patch/async patch.dart:33:15)
E/颤振(14220):#10#完成同步返回(dart:async patch/async patch.dart:291:13)
E/flatter(14220):#11 Query.getDocuments(包:cloud_firestore/src/Query.dart)
E/颤振(14220):
E/颤振(14220):#12(我的应用状态.)一旦改变(包:火/主。dart:102:12)
E/颤振(14220):#13_MyAppState.build。(包装:消防/主要。省道:559:33)
E/flatter(14220):#14 EditableTextState.(格式和设置值(包:flatter/src/widgets/EditableText.dart:1607:14)
E/颤振(14220):#15 EditableTextState.updateEditingValue
int.tryParse(documentData['price_reduction']);
int.tryParse(documentData['price_reduction']) ?? 0;
int.parse(documentData['price_reduction']);