Неудачное утверждение: строка 1233 поз. 12: 'renderObject.child == child': неверно
Я создал провайдера, в котором я создал будущее, чтобы получить идентификатор пользователя из SharedPreferences.
Я создал своего провайдера, как показано ниже
class UserInfoProvider with ChangeNotifier{
late int _userId;
get userID {
return _userId;
}
Future getAndSetUserId() async
{
final prefs = await SharedPreferences.getInstance();
final userEnt = json.decode(prefs.getString('userEnt') ?? '{}');
_userId = userEnt['userId'];
}
}
У меня есть экран под названиемSilverCommonAppBar
, Где я пытался получить этот идентификатор пользователя, как показано ниже
class SilverCommonAppBar extends StatefulWidget {
const SilverCommonAppBar({
Key? key,
}) : super(key: key);
@override
State<SilverCommonAppBar> createState() => SilverCommonAppBarState();
}
class SilverCommonAppBarState extends State<SilverCommonAppBar> {
late int userId;
bool _isInit = true;
@override
void initState() {
super.initState();
}
@override
void didChangeDependencies() {
if(_isInit)
{
Provider.of<UserInfoProvider>(context).getAndSetUserId();
}
_isInit = false;
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
userId = Provider.of<UserInfoProvider>(context).userID;
print(Provider.of<UserInfoProvider>(context).userID);
return Container();
}
}
Я получаю сообщение об ошибке: Неудачное утверждение: строка 1233 поз. 12: 'renderObject.child == child': неверно.
Детали ошибки:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY
╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Consumer<AuthProvider>(dependencies:
[_InheritedProviderScope<AuthProvider?>]):
'package:flutter/src/widgets/binding.dart': Failed assertion: line 1233 pos 12:
'renderObject.child
== child': is not true.
Either the assertion indicates an error in the framework itself, or we should provide
substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
The relevant error-causing widget was:
Consumer<AuthProvider>
Consumer:file:///Users/alimonkarim/Desktop/project/miles_design_flutter/lib/main.dart:50:10
When the exception was thrown, this was the stack:
#2 RenderObjectToWidgetElement.removeRenderObjectChild
(package:flutter/src/widgets/binding.dart:1233:12)
#3 RenderObjectElement.detachRenderObject
(package:flutter/src/widgets/framework.dart:6005:37)
#4 Element.deactivateChild (package:flutter/src/widgets/framework.dart:3857:11)
#5 Element.updateChild (package:flutter/src/widgets/framework.dart:3540:9)
#6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4832:16)
#7 Element.rebuild (package:flutter/src/widgets/framework.dart:4529:5)
#8 StatelessElement.update (package:flutter/src/widgets/framework.dart:4883:5)
#9 Element.updateChild (package:flutter/src/widgets/framework.dart:3530:15)
#10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4832:16)
#11 Element.rebuild (package:flutter/src/widgets/framework.dart:4529:5)
#12 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2659:19)
#13 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:891:21)
#14 RendererBinding._handlePersistentFrameCallback
(package:flutter/src/rendering/binding.dart:370:5)
#15 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1146:15)
#16 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1083:9)
#17 SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>
(package:flutter/src/scheduler/binding.dart:864:7)
(elided 6 frames from class _AssertionError, class _RawReceivePortImpl, class _Timer, and
dart:async-patch)
══════════════════════════════════════════════════════════════════════════════════════════════════
══
Если я сделаю userId статическим, это означает, что если я удалю опоздание и установлю идентификатор пользователя с 88
int userId = 88;
И если я удалю строки ниже, он работает нормально
userId = Provider.of<UserInfoProvider>(context).userID;
print(Provider.of<UserInfoProvider>(context).userID);
Почему я не могу установить идентификатор пользователя от провайдера на поздний идентификатор пользователя?