Im-Kevin / cool_ui

用flutter实现一些我认为好看的UI控件,有Popover,仿Weui的Toast,自定义键盘
Apache License 2.0
460 stars 74 forks source link

在main里加WidgetsFlutterBinding.ensureInitialized() 会导致runMockApp无效 #71

Closed AlexTeamX closed 3 years ago

AlexTeamX commented 3 years ago

报错信息如下

The following _Exception was thrown building Builder(dirty): Exception: CoolKeyboard can only be used in MockBinding

The relevant error-causing widget was: Builder Builder:file:///C:/Users/temp/AppData/Local/Pub/Cache/hosted/pub.flutter-io.cn/cool_ui-1.1.0/lib/keyboards/keyboard_root.dart:35:38 When the exception was thrown, this was the stack:

0 CoolKeyboard.interceptorInput (package:cool_ui/keyboards/keyboard_manager.dart:34:7)

1 CoolKeyboard.init (package:cool_ui/keyboards/keyboard_manager.dart:28:5)

2 KeyboardRootState.build. (package:cool_ui/keyboards/keyboard_root.dart:36:20)

3 Builder.build (package:flutter/src/widgets/basic.dart:8004:48)

4 StatelessElement.build (package:flutter/src/widgets/framework.dart:4739:28)

5 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4665:15)

6 Element.rebuild (package:flutter/src/widgets/framework.dart:4355:5)

7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4643:5)

8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)

... Normal element mounting (23 frames)

31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)

32 Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)

33 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1198:16)

34 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1167:5)

35 RenderObjectToWidgetAdapter.attachToRenderTree. (package:flutter/src/widgets/binding.dart:1112:18)

36 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2573:19)

37 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1111:13)

38 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:944:7)

39 WidgetsBinding.scheduleAttachRootWidget. (package:flutter/src/widgets/binding.dart:924:7)

(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)

AlexTeamX commented 3 years ago

查看了一下源码,将WidgetsFlutterBinding.ensureInitialized()改为MockBinding.ensureInitialized()即可,可以在文档中说明一下

image