googleads / admob-ads-in-flutter

Apache License 2.0
72 stars 36 forks source link

AdWidget requires Ad.load to be called before AdWidget is inserted into the tree #28

Open islom9797 opened 1 year ago

islom9797 commented 1 year ago

I am tried to use test id and Ids it work and dont have any error and all is work but when I use real my Id and ids from Google admob its give error like this.: The following assertion was thrown building AdWidget(dirty, state: _AdWidgetState#71d66): AdWidget requires Ad.load to be called before AdWidget is inserted into the tree

Parameter ad is not loaded. Call Ad.load before AdWidget is inserted into the tree.

The relevant error-causing widget was: AdWidget AdWidget:file:///C:/Users/USER/StudioProjects/pytorch_lite/example/lib/RunModelByCameraDemo.dart:646:22 When the exception was thrown, this was the stack:

0 _AdWidgetState.build (package:google_mobile_ads/src/ad_containers.dart:632:7)

1 StatefulElement.build (package:flutter/src/widgets/framework.dart:4921:27)

2 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4808:15)

3 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

4 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

5 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

6 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

7 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6224:14)

8 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

9 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

10 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

11 StatelessElement.update (package:flutter/src/widgets/framework.dart:4885:5)

12 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

13 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6224:14)

14 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

15 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5827:32)

16 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6377:17)

17 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

18 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

19 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

20 StatelessElement.update (package:flutter/src/widgets/framework.dart:4885:5)

21 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

23 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

24 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

25 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

27 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

28 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

29 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

30 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5827:32)

31 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6377:17)

32 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

33 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

34 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

35 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

36 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

37 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

38 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

39 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

40 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

41 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

42 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

43 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

44 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

45 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

46 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

47 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6224:14)

48 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

50 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

51 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

52 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

53 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6224:14)

54 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

55 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

56 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

57 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

58 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

59 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

60 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

61 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

62 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

63 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

64 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

65 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

66 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

67 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

68 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

69 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

70 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

71 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

72 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

74 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

75 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

76 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

77 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

78 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

79 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

80 ProxyElement.update (package:flutter/src/widgets/framework.dart:5156:5)

81 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

83 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

84 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

85 StatefulElement.update (package:flutter/src/widgets/framework.dart:5011:5)

86 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)

87 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4834:16)

88 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4979:11)

89 Element.rebuild (package:flutter/src/widgets/framework.dart:4531:5)

90 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)

91 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:891:21)

92 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:370:5)

93 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)

94 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1083:9)

95 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:997:5)

99 _invoke (dart:ui/hooks.dart:151:10)

100 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:308:5)

101 _drawFrame (dart:ui/hooks.dart:115:31)

(elided 3 frames from dart:async) photo_2022-10-07_16-53-16

rafaellop commented 1 year ago

Same thing here. In my case it occurs when I turn off internet connection on the device and navigate between pages where the AdWidget is placed. The build function is called for the page which I'm switching out of and the exception occurs. What's funny it is still thrown even if the connection is back and even on the same page and even though the banner is yet properly displayed. Somewhere in the tree there's still an object which generates the exception but at least the message is gone. I'm checking both if banner is null and the loaded flag.

Test case

  1. Start the app with no connection
  2. Page 1 is displayed and AdWidget is not because the banner is null and flag is false
  3. We turn ON the internet connection
  4. Nothing happens so we navigate to the page 2
  5. Flutter calls builds for the page 2 which loads banner and sets the flag
  6. But Flutter also calls build for the page 1 which has AdWidget depending on the banner != null and isLoaded flag. However they are set to not null and true due to the page 2 build and cause the "AdWidget requires Ad.load" exception for the page 1 AdWidget which is rebuilt.