flutter_boost
flutter_boost copied to clipboard
[iOS] Unhandled Exception: Null check operator used on a null value
iOS, Native to Flutter success, Flutter pop to Native, failed.
log:
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Null check operator used on a null value
#0 FlutterBoostAppState.pop (package:flutter_boost/src/flutter_boost_app.dart:497:51)
#1 FlutterBoostAppState.popWithResult (package:flutter_boost/src/flutter_boost_app.dart:391:18)
#2 BoostNavigator.pop (package:flutter_boost/src/boost_navigator.dart:109:28)
#3 NavigatorExtState.pop (package:flutter_boost/src/boost_container.dart:222:31)
#4 _SplashPageState.build.<anonymous closure> (package:ost_flutter_module/splash/view.dart:55:39)
#5 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1154:21)
#6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:275:24)
#7 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:654:11)
#8 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:311:5)
#9 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:244:7)
#10 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:630:9)
#11 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
#12 PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:143:9)
#13 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:625:13)
#14 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
#15 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
#16 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:465:19)
#17 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:445:22)
#18 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:331:11)
#19 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:400:7)
#20 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:363:5)
#21 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:320:7)
#22 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:293:9)
#23 _invoke1 (dart:ui/hooks.dart:158:13)
#24 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:382:7)
#25 _dispatchPointerDataPacket (dart:ui/hooks.dart:91:31)
感觉是boostNavigator appState 为null导致的。
呃,如果flutterboost被正确初始化了,appState 不应该为null啊~
看看具体是哪个对象为null,有没有其他错误提示输出?
我还特意参照example对比,没有什么问题,flutterboost初始化是成功的,因为我push是成功的,只有pop不成功。另外,没有其他日志。
呃,如果flutterboost被正确初始化了,appState 不应该为null啊~
看看具体是哪个对象为null,有没有其他错误提示输出?
Future<void> _removeContainer(BoostContainer container) async {
if (container.pageInfo.withContainer!) { // withContainer 这里为 null
Logger.log('_removeContainer , uniqueId=${container.pageInfo.uniqueId}');
final params = CommonParams()
..pageName = container.pageInfo.pageName
..uniqueId = container.pageInfo.uniqueId
..arguments = container.pageInfo.arguments;
return await _nativeRouterApi.popRoute(params);
}
}
是withContainer为空了
这个并不是appState为null。应该是下面的空判定报错:
这个是因为直接把Flutter页面当作App启动的第一个页面导致的吧。空不过的原因是initialRoute对应的PageInfo如下:
没有填
withContainer
字段
这个并不是appState为null。应该是下面的空判定报错:
这个是因为直接把Flutter页面当作App启动的第一个页面导致的吧。空不过的原因是initialRoute对应的PageInfo如下:
没有填
withContainer
字段
谢谢解答,但是我并没有把flutter作为app的启动页,我的操作是启动是原生,原生通过按钮跳转到flutter。不知道你这里所说的启动页是不是这个意思?
如果是从原生启动Flutter页面,FlutterBoost应该会先初始化initialRoute("/"),再在上面启动一个由Native传递过来的路由(比方说"flutterPage")才对。不应该启动Flutter后,直接就是根路由。或者你Native跳转Flutter时,没填路由?
native跳转到flutter我传的是flutter的根路由,也就是默认的初始页面
你不用根路由估计就好了
我明白你的意思