使用 Firebase 时出现 Flutter Stackoverflow 错误
Flutter Stackoverflow Error when using Firebase
我不知道这个 Whosebug 错误是从哪里来的
I/flutter (20342): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (20342): The following WhosebugError was thrown building Analytics(dirty):
I/flutter (20342): Stack Overflow
I/flutter (20342):
I/flutter (20342): The relevant error-causing widget was:
I/flutter (20342): Analytics
I/flutter (20342): file:///C:/Users/OneDrive/Dokumente/Development/GitHub/trimlog/src/flutter_app/lib/screens/wrapper.dart:87:11
I/flutter (20342):
I/flutter (20342): When the exception was thrown, this was the stack:
I/flutter (20342): #0 _LinkedHashMapMixin._getValueOrData (dart:collection-patch/compact_hash.dart:331:3)
I/flutter (20342): #1 _LinkedHashMapMixin.containsKey (dart:collection-patch/compact_hash.dart:355:54)
I/flutter (20342): #2 FirebaseFirestore.instanceFor (package:cloud_firestore/src/firestore.dart:50:26)
I/flutter (20342): #3 new Database (package:Trimlog/services/database/database.dart:39:97)
I/flutter (20342): #4 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #5 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #6 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #7 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #8 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #9 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #10 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #11 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #12 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #13 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #14 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #15 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #16 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #17 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #18 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #19 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #20 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #21 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #22 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #23 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #24 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #25 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #26 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #27 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #28 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #29 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #30 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #31 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #32 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #33 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #34 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #35 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #36 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #37 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #38 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #39 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #40 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #41 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #42 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #43 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): ...
I/flutter (20342): ...
I/flutter (20342): #15600 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
I/flutter (20342): #15601 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
I/flutter (20342): #15602 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
I/flutter (20342): ... Normal element mounting (7 frames)
I/flutter (20342): #15609 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
I/flutter (20342): #15610 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
I/flutter (20342): #15611 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1158:36)
I/flutter (20342): #15612 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1143:20)
I/flutter (20342): #15613 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2683:19)
I/flutter (20342): #15614 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1136:11)
I/flutter (20342): #15615 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:350:23)
I/flutter (20342): #15616 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1883:59)
I/flutter (20342): #15617 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:915:15)
I/flutter (20342): #15618 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1883:14)
I/flutter (20342): #15619 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:339:5)
I/flutter (20342): #15620 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:485:5)
I/flutter (20342): #15621 RenderSliverFixedExtentBoxAdaptor.performLayout (package:flutter/src/rendering/sliver_fixed_extent_list.dart:259:17)
I/flutter (20342): #15622 RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
I/flutter (20342): #15623 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:132:12)
I/flutter (20342): #15624 _RenderSliverFractionalPadding.performLayout (package:flutter/src/widgets/sliver_fill.dart:170:11)
I/flutter (20342): #15625 RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
I/flutter (20342): #15626 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:507:13)
I/flutter (20342): #15627 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1561:12)
I/flutter (20342): #15628 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1470:20)
I/flutter (20342): #15629 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1634:7)
I/flutter (20342): #15630 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:884:18)
I/flutter (20342): #15631 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:436:19)
I/flutter (20342): #15632 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:914:13)
I/flutter (20342): #15633 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
I/flutter (20342): #15634 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
I/flutter (20342): #15635 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
I/flutter (20342): #15636 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
I/flutter (20342): #15640 _invoke (dart:ui/hooks.dart:251:10)
I/flutter (20342): #15641 _drawFrame (dart:ui/hooks.dart:209:3)
I/flutter (20342): (elided 3 frames from dart:async)
I/flutter (20342):
I/flutter (20342): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (20342): Another exception was thrown: NoSuchMethodError: The getter 'analytic' was called on null.
在我的main.dart
class Instances {
static Database database = new Database();
}
在database.dart
class Database {
final _databaseReference = FirebaseFirestore.instance; // Instance of Firebase
final user = new DatabaseUser();
final boat = new DatabaseBoat();
final trim = new DatabaseTrim();
final analytic = new DatabaseAnalytic();
在database_analytic.dart
class DatabaseAnalytic extends Database {
我如何访问例如 DatabaseAnalytic
Instances.database.analytic.deleteAnalyticOfBoat(widget.boat.documentid, widget.analytic.documentid)
wrapper.dart: https://hastebin.com/eholocelug.java
谁能告诉我错误是从哪里来的?
我看到它说“getter 'analytic' 被调用为空。”,但我不明白为什么会这样。
我也不确定这是否是使用数据库的最佳方式,如果有更好的方式,请告诉我。
我们可以在您的错误输出中看到这一点
Another exception was thrown: NoSuchMethodError: The getter 'analytic' was called on null.
用这条线
Instances.database.analytic.deleteAnalyticOfBoat(widget.boat.documentid,widget.analytic.documentid)
您的错误假定 Instances.database
是 null
如果您查看错误的其余部分,数据库会不断地被一遍又一遍地实例化。数据库正在实例化 DatabaseAnalytic,它再次实例化数据库。这就是导致溢出错误的原因。
我不知道这个 Whosebug 错误是从哪里来的
I/flutter (20342): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (20342): The following WhosebugError was thrown building Analytics(dirty):
I/flutter (20342): Stack Overflow
I/flutter (20342):
I/flutter (20342): The relevant error-causing widget was:
I/flutter (20342): Analytics
I/flutter (20342): file:///C:/Users/OneDrive/Dokumente/Development/GitHub/trimlog/src/flutter_app/lib/screens/wrapper.dart:87:11
I/flutter (20342):
I/flutter (20342): When the exception was thrown, this was the stack:
I/flutter (20342): #0 _LinkedHashMapMixin._getValueOrData (dart:collection-patch/compact_hash.dart:331:3)
I/flutter (20342): #1 _LinkedHashMapMixin.containsKey (dart:collection-patch/compact_hash.dart:355:54)
I/flutter (20342): #2 FirebaseFirestore.instanceFor (package:cloud_firestore/src/firestore.dart:50:26)
I/flutter (20342): #3 new Database (package:Trimlog/services/database/database.dart:39:97)
I/flutter (20342): #4 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #5 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #6 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #7 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #8 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #9 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #10 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #11 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #12 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #13 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #14 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #15 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #16 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #17 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #18 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #19 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #20 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #21 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #22 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #23 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #24 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #25 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #26 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #27 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #28 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #29 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #30 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #31 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #32 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #33 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #34 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #35 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #36 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #37 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #38 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #39 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #40 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #41 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #42 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): #43 new Database (package:Trimlog/services/database/database.dart)
I/flutter (20342): ...
I/flutter (20342): ...
I/flutter (20342): #15600 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
I/flutter (20342): #15601 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
I/flutter (20342): #15602 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
I/flutter (20342): ... Normal element mounting (7 frames)
I/flutter (20342): #15609 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
I/flutter (20342): #15610 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
I/flutter (20342): #15611 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1158:36)
I/flutter (20342): #15612 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1143:20)
I/flutter (20342): #15613 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2683:19)
I/flutter (20342): #15614 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1136:11)
I/flutter (20342): #15615 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:350:23)
I/flutter (20342): #15616 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1883:59)
I/flutter (20342): #15617 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:915:15)
I/flutter (20342): #15618 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1883:14)
I/flutter (20342): #15619 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:339:5)
I/flutter (20342): #15620 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:485:5)
I/flutter (20342): #15621 RenderSliverFixedExtentBoxAdaptor.performLayout (package:flutter/src/rendering/sliver_fixed_extent_list.dart:259:17)
I/flutter (20342): #15622 RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
I/flutter (20342): #15623 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:132:12)
I/flutter (20342): #15624 _RenderSliverFractionalPadding.performLayout (package:flutter/src/widgets/sliver_fill.dart:170:11)
I/flutter (20342): #15625 RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
I/flutter (20342): #15626 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:507:13)
I/flutter (20342): #15627 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1561:12)
I/flutter (20342): #15628 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1470:20)
I/flutter (20342): #15629 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1634:7)
I/flutter (20342): #15630 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:884:18)
I/flutter (20342): #15631 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:436:19)
I/flutter (20342): #15632 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:914:13)
I/flutter (20342): #15633 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
I/flutter (20342): #15634 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
I/flutter (20342): #15635 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
I/flutter (20342): #15636 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
I/flutter (20342): #15640 _invoke (dart:ui/hooks.dart:251:10)
I/flutter (20342): #15641 _drawFrame (dart:ui/hooks.dart:209:3)
I/flutter (20342): (elided 3 frames from dart:async)
I/flutter (20342):
I/flutter (20342): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (20342): Another exception was thrown: NoSuchMethodError: The getter 'analytic' was called on null.
在我的main.dart
class Instances {
static Database database = new Database();
}
在database.dart
class Database {
final _databaseReference = FirebaseFirestore.instance; // Instance of Firebase
final user = new DatabaseUser();
final boat = new DatabaseBoat();
final trim = new DatabaseTrim();
final analytic = new DatabaseAnalytic();
在database_analytic.dart
class DatabaseAnalytic extends Database {
我如何访问例如 DatabaseAnalytic
Instances.database.analytic.deleteAnalyticOfBoat(widget.boat.documentid, widget.analytic.documentid)
wrapper.dart: https://hastebin.com/eholocelug.java
谁能告诉我错误是从哪里来的?
我看到它说“getter 'analytic' 被调用为空。”,但我不明白为什么会这样。
我也不确定这是否是使用数据库的最佳方式,如果有更好的方式,请告诉我。
我们可以在您的错误输出中看到这一点
Another exception was thrown: NoSuchMethodError: The getter 'analytic' was called on null.
用这条线
Instances.database.analytic.deleteAnalyticOfBoat(widget.boat.documentid,widget.analytic.documentid)
您的错误假定 Instances.database
是 null
如果您查看错误的其余部分,数据库会不断地被一遍又一遍地实例化。数据库正在实例化 DatabaseAnalytic,它再次实例化数据库。这就是导致溢出错误的原因。