'(TypleClass) => String' is not a subtype of type '(dynamic) => String' - flutter

First of all, I´ve already submitted an [issue][1] on Flutter's team repository since to me this is an issue on Flutter/Dart but maybe I´m wrong.
Steps to Reproduce
Execute flutter run on the code sample
There are two type of flows that behaves in a similar way, I've created the project above to represent those scenarios
You will find 2 buttons that in each case will be redirected to a new page that can trigger each failure
Expected results:
In the "widget example" I'm creating a generic stateful widget TypeErrorWidget<T> that has a property of type:
final IdMapper<T> idMapper;
where IdMapper<T> is defined as:
typedef IdMapper<T> = String Function(T item);
later on, this property is accessed inside the state to map an iterable of items and extract the ids with the function provided:
_itemsIds = widget.items.map((e) {
return widget.idMapper(e);
}).toList();
I'm expecting to get the ids as a list of List<String>
Actual results:
However, when runtime reaches that line it's failing complaining about the following: '(ExampleListItem) => String' is not a subtype of type '(dynamic) => String' , which doesn't have much sense since dynamic should contain my custom type in any case.
Code sample
lib/presentation/widgets/type_error_widget.dart
class TypeErrorWidget<T> extends StatefulWidget {
final Iterable<T> items;
final IdMapper<T> idMapper;
const TypeErrorWidget({
Key? key,
required this.items,
required this.idMapper,
}) : super(key: key);
#override
State<TypeErrorWidget> createState() => _TypeErrorWidgetState();
}
class _TypeErrorWidgetState extends State<TypeErrorWidget> {
late List<String> _itemsIds;
#override
void initState() {
_itemsIds = widget.items.map((e) {
return widget.idMapper(e); <- it throws!
}).toList();
super.initState();
}
#override
Widget build(BuildContext context) {
return Column(
children: [
const Text("I'll crash"),
Text(_itemsIds.toString()),
],
);
}
}
class WidgetExamplePage extends StatefulWidget {
const WidgetExamplePage({super.key});
#override
State<WidgetExamplePage> createState() => _WidgetExamplePageState();
}
class _WidgetExamplePageState extends State<WidgetExamplePage> {
bool _makeItCrash = false;
bool _makeItWork = false;
final List<ExampleListItem> _items = const [
ExampleListItem(
id: "id1",
title: "Title1",
),
ExampleListItem(
id: "id2",
title: "Title2",
),
];
#override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Widget error")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
if (_makeItCrash)
TypeErrorWidget<ExampleListItem>(
items: _items,
idMapper: (item) {
return item.id;
},
),
ElevatedButton(
onPressed: () {
setState(() {
_makeItWork = false;
_makeItCrash = true;
});
},
child: const Text("Make it crash"),
),
if (_makeItWork && !_makeItCrash)
TypeWorkaroundWidget<ExampleListItem>(
items: _items,
idMapper: (item) {
return item.id;
},
),
if (!_makeItCrash)
ElevatedButton(
onPressed: () {
setState(() {
_makeItWork = true;
_makeItCrash = false;
});
},
child: const Text("Make it works"),
),
],
),
),
);
}
}
Logs
The following _TypeError was thrown building KeyedSubtree-[GlobalKey#196d8]:
type '(ExampleListItem) => String' is not a subtype of type '(dynamic) => String'
The relevant error-causing widget was:
Scaffold
Scaffold:file:///Users/victor/Documents/personal/development/flutter/type_issues/lib/presentation/pages/widget_example_page.dart:29:12
When the exception was thrown, this was the stack:
#0 _TypeErrorWidgetState.initState.<anonymous closure> (package:type_issues/presentation/widgets/type_error_widget.dart:26:21)
#1 MappedListIterable.elementAt (dart:_internal/iterable.dart:413:31)
#2 ListIterator.moveNext (dart:_internal/iterable.dart:342:26)
#3 new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)
#4 new _GrowableList.of (dart:core-patch/growable_array.dart:150:28)
#5 new List.of (dart:core-patch/array_patch.dart:51:28)
#6 ListIterable.toList (dart:_internal/iterable.dart:213:44)
#7 _TypeErrorWidgetState.initState (package:type_issues/presentation/widgets/type_error_widget.dart:27:8)
#8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5015:57)
#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)
#10 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#11 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#12 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)
#13 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5964:32)
#14 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#16 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#17 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#18 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#19 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#20 StatelessElement.update (package:flutter/src/widgets/framework.dart:4956:5)
#21 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#23 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#24 StatelessElement.update (package:flutter/src/widgets/framework.dart:4956:5)
#25 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#27 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#28 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#29 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#30 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#31 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#32 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#33 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#34 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5904:32)
#35 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
#36 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#37 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#38 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#39 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#40 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#42 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#43 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#44 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#45 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#46 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#47 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#48 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#49 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#50 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#51 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#52 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#53 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#55 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#56 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#57 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#58 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#59 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#60 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#61 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#62 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#63 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#64 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#65 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#66 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#67 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#69 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#70 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#71 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#72 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#74 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#75 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#76 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#78 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#79 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#80 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#81 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#82 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#83 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#84 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#85 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#86 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#87 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#88 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#89 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#90 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#91 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#92 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#93 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#94 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#95 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#96 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#97 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#98 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#99 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#100 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#101 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#102 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#103 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#104 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#105 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#106 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#107 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:19)
#108 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#109 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
#110 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
#111 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
#112 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1015:5)
#113 _invoke (dart:ui/hooks.dart:148:13)
#114 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
#115 _drawFrame (dart:ui/hooks.dart:115:31)
To workaround that issue I need to pass the widget property down to the widget state through it's constructor:
lib/presentation/widgets/type_error_workaround.dart
...
#override
State<TypeWorkaroundWidget> createState() => _TypeErrorWidgetState<T>(
idMapper: idMapper,
);
...
class _TypeErrorWidgetState<T> extends State<TypeWorkaroundWidget> {
late List<String> _itemsIds;
final IdMapper<T> idMapper;
_TypeErrorWidgetState({
required this.idMapper,
});
#override
void initState() {
_itemsIds = widget.items.map((e) {
return idMapper(e) <-- it won't throw;
}).toList();
super.initState();
}
Aside from this issue which I have found a workaround I'm having a similar issue, in this example I'm using a Freezed union type class:
lib/utils/types/freezed_example_type.dart
#freezed
class FreezedExampleType<T extends Object> with _$ExampleClass<T> {
factory FreezedExampleType.example({
required TypedFnExample<T> callback,
}) = _Example<T>;
}
typedef TypedFnExample<T> = String Function(T item);
The idea is that later on I can push many instances of FreezedExampleType into an array and later I can put some logic to act depending on the class type, in my example I simplified this by just pushing one item:
class FreezedPage extends StatefulWidget {
const FreezedPage({super.key});
#override
State<FreezedPage> createState() => _FreezedPageState();
}
class _FreezedPageState extends State<FreezedPage> {
bool _makeItCrash = false;
bool _makeItWork = false;
List<FreezedExampleType> exampleType = List<FreezedExampleType>.of([]);
#override
void initState() {
exampleType.add(
FreezedExampleType<ExampleListItem>.example(
callback: (item) {
return item.id;
},
),
);
super.initState();
}
...
Later on, we access the type on the array and try to act on it's typed property:
_userType() {
const item = ExampleListItem(
id: "exampleId",
title: "Example Title",
);
print(
exampleType.first.mapOrNull(
example: (value) {
return value.callback(item); <- This will throw! =c
},
),
);
}
Unfortunately this throws with the same type of error: type '(ExampleListItem) => String' is not a subtype of type '(Object) => String'
Logs
```
type '(ExampleListItem) => String' is not a subtype of type '(Object) => String'
When the exception was thrown, this was the stack:
#0 _FreezedPageState._userType. (package:type_issues/presentation/pages/freezed_example_page.dart:86:24)
#1 _$_Example.mapOrNull (package:type_issues/utils/types/freezed_example_type.freezed.dart:198:21)
#2 _FreezedPageState._userType (package:type_issues/presentation/pages/freezed_example_page.dart:84:25)
#3 _FreezedPageState.build. (package:type_issues/presentation/pages/freezed_example_page.dart:51:17)
#4 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1072:21)
#5 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253:24)
#6 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:627:11)
#7 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:306:5)
#8 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:239:7)
#9 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:615:9)
#10 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
#11 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:143:9)
#12 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:617:13)
#13 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
#14 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
#15 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:460:19)
#16 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440:22)
#17 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:337:11)
#18 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395:7)
#19 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357:5)
#20 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314:7)
#21 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295:7)
#22 _invoke1 (dart:ui/hooks.dart:167:13)
#23 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:341:7)
#24 _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)
Handler: "onTap"
Recognizer:
TapGestureRecognizer#90ba6
</details>
[1]: https://github.com/flutter/flutter/issues/110718

In the state class of TypeErrorWidget, set the Type like so:
class TypeErrorWidget<T> extends StatefulWidget {
final Iterable<T> items;
final IdMapper<T> idMapper;
const TypeErrorWidget({
Key? key,
required this.items,
required this.idMapper,
}) : super(key: key);
#override
State<TypeErrorWidget<T>> createState() => _TypeErrorWidgetState<T>();
}
class _TypeErrorWidgetState<T> extends State<TypeErrorWidget<T>> {
late List<String> _itemsIds;
#override
void initState() {
_itemsIds = widget.items.map((e) {
return widget.idMapper(e);
}).toList();
super.initState();
}
#override
Widget build(BuildContext context) {
return Column(
children: [
const Text("I'll crash"),
Text(_itemsIds.toString()),
],
);
}
}

Related

'stream "messagestream" has not been initialized' error

I'm creating a messaging system for my app, which uses the stream "messageStream", which I use first here:
class _chatscreenstate extends State<chatscreen> {
late String chatroomId = ' ';
late String messageId = '';
late String myName;
late String myProfilePic = "";
late Stream<QuerySnapshot> messageStream;
TextEditingController messageTextEditingController = TextEditingController();
Just as a sidenote, none of the code I have posted here gives any errors, the errors occur only when the program is run and tries to build the stream.
I also use the messagestream in this widget:
Widget chatmessages() {
return StreamBuilder<QuerySnapshot>(
stream: messageStream,
builder: (context, AsyncSnapshot snapshot) {
return snapshot.hasData
? ListView.builder(
padding: EdgeInsets.only(bottom: 70, top: 16),
itemCount: snapshot.data?.docs.length,
itemBuilder: (context, index) {
DocumentSnapshot ds = snapshot.data!.docs[index];
return chatMessageTile(
ds["message"], username.value == ds["sendbyme"]);
})
: Center(child: CircularProgressIndicator());
});
}
Which takes another widget "chatMessageTile" which contains the data in the textbubbles which will be used to build the list. Here is where I am getting the data:
getAndSendMessages() async {
messageStream = await database().getChatRoomMessages(chatroomId);
}
doThisOnLaunch() async {
await getMyInfoFromSharedPreference();
getAndSendMessages();
}
#override
void initState() {
doThisOnLaunch();
super.initState();
}
This concludes all the places that I've used messageStream in my code.
When I tried running it, I get the error:
The following LateError was thrown building chatscreen(dirty, dependencies: [_InheritedTheme,
_LocalizationsScope-[GlobalKey#d42c2]], state: _chatscreenstate#c4a8c):
LateInitializationError: Field 'messageStream' has not been initialized.
The relevant error-causing widget was:
chatscreen
chatscreen:file:///Users/jshen/Documents/GitHub/TwoCents/twocents_app/lib/josh/twocentsmessaging/messagehome.dart:331:63
When the exception was thrown, this was the stack:
#0 _chatscreenstate.messageStream (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart)
#1 _chatscreenstate.chatmessages (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:120:17)
#2 _chatscreenstate.build (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:180:26)
#3 StatefulElement.build (package:flutter/src/widgets/framework.dart:4992:27)
#4 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4878:15)
#5 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#7 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4859:5)
#8 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5041:11)
#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)
... Normal element mounting (24 frames)
#33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#34 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#35 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6447:32)
... Normal element mounting (175 frames)
#210 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#211 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#212 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)
#213 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5964:32)
#214 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
#215 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#216 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#217 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#218 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#219 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#220 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#221 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#222 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#223 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#224 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#225 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#226 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#227 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#228 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
#229 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#230 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#231 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#232 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#233 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#234 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#235 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#236 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#237 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#238 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#239 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#240 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#241 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#242 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#243 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#244 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#245 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#246 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#247 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#248 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:19)
#249 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#250 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
#251 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
#252 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
#253 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1015:5)
#254 _invoke (dart:ui/hooks.dart:148:13)
#255 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
#256 _drawFrame (dart:ui/hooks.dart:115:31)
════════════════════════════════════════════════════════════════════════════════════════════════════
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'Future<dynamic>' is not a subtype of type 'Stream<QuerySnapshot<Object?>>'
#0 _chatscreenstate.getAndSendMessages (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:136:5)
#1 _chatscreenstate.doThisOnLaunch (package:twocents_app/josh/twocentsmessaging/Chatscreen.dart:141:5)
<asynchronous suspension>
And the Iphone simulator shows the red screen with yellow text saying : "Field messageStream has not been initialized". I'm not sure why since I declared the stream as "late", and nothing I've found online fixes it. Any ideas?
doThisOnLaunch is an async function, you are not awaiting its call in initState. So initState will not wait until the call to doThisOnLaunch is finished.
You can't make the initState async, so i suggest moving the initialization code to didChangeDependencies which can be async
bool _isInitialized = false;
#override
void didChangeDependencies() {
super.didChangeDependencies();
if (!_isInitialized) {
await doThisOnLaunch();
_isInitialized = true;
}
}

FirebaseMessaging.instance.getInitialMessage() not working with Splash Screen

I have integrated Firebase Cloud Messaging to my Flutter mobile app with the help of GetX State Management. Also I used Laravel with Firebase Admin SDK to send notification to my app.
The notification is working fine on both foreground state and background state (paused). The problem starts when I click the notification where the app is in terminated state (app closed). Do I have to set a delay between the splashscreen and main page?
I have tried to do this but error still occur
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
print('TERMINATED');
if (FirebaseAuth.instance.currentUser != null) {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
//adding delay here since my splashscreen have the same delay
Future.delayed(const Duration(seconds: 6));
bottomnavbarController.updateIndex(int.parse(redirectRoute));
}
} else {
Get.offAllNamed(Routes.LOGIN);
}
}
});
I get this error
Unhandled Exception:
You are trying to use contextless
navigation without a GetMaterialApp or Get.key
Here is my main.dart
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
if (FirebaseAuth.instance.currentUser == null) {
Get.offAllNamed(Routes.LOGIN);
} else {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
print('TERMINATED');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
}
}
}
});
#override
Widget build(BuildContext context) {
final authController = Get.put(AuthController(), permanent: true);
return FutureBuilder(
future: Future.delayed(const Duration(seconds: 6)),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Obx(
() => GetMaterialApp(
debugShowCheckedModeBanner: false,
title: "Application",
theme: ThemeData(
appBarTheme: const AppBarTheme(
elevation: 0.2,
foregroundColor: Colors.black,
backgroundColor: Colors.white),
),
initialRoute: authController.isSkipIntro.isTrue
? authController.isAuthAndVerified.isTrue
? Routes.PAGEWRAPPER
: Routes.LOGIN
: Routes.INTRODUCTION,
getPages: AppPages.routes,
),
);
}
return FutureBuilder(
future: authController.firstInitialize(),
builder: (context, snapshot) {
return const SplashScreen();
},
);
},
);
}
Here is my bottom nav controller
class BottomnavbarController extends GetxController {
final bottomNavIndex = 0.obs;
void updateIndex(int index){
bottomNavIndex.value = index;
Get.offAllNamed(Routes.PAGEWRAPPER);
}
}
Here's the log
Launching lib\main.dart on RNE L22 in release mode...
Running Gradle task 'assembleRelease'... 76.4s
√ Built build\app\outputs\flutter-apk\app-release.apk (10.0MB).
Installing build\app\outputs\flutter-apk\app.apk... 3.4s
Flutter run key commands.
h List all available interactive commands.
c Clear the screen
q Quit (terminate the application on the device).
W/FlutterJNI(10061): FlutterJNI.loadLibrary called more than once
W/FlutterJNI(10061): FlutterJNI.prefetchDefaultFontManager called more than once
W/FlutterJNI(10061): FlutterJNI.init called more than once
W/FlutterJNI(10239): FlutterJNI.loadLibrary called more than once
W/FlutterJNI(10239): FlutterJNI.init called more than once
I/flutter (10239): Handling a background message: 0:1646807530074172%f77b2610f77b2610
I/flutter (10239): TERMINATED
E/flutter (10239): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: You are trying to use contextless navigation without
E/flutter (10239): a GetMaterialApp or Get.key.
E/flutter (10239): If you are testing your app, you can use:
E/flutter (10239): [Get.testMode = true], or if you are running your app on
E/flutter (10239): a physical device or emulator, you must exchange your [MaterialApp]
E/flutter (10239): for a [GetMaterialApp].
E/flutter (10239):
E/flutter (10239): #0 GetNavigation.global (package:get/get_navigation/src/extension_navigation.dart:1094)
E/flutter (10239): #1 GetNavigation.offAllNamed (package:get/get_navigation/src/extension_navigation.dart:786)
E/flutter (10239): #2 BottomnavbarController.updateIndex (package:prototypeapp/app/modules/bottomnavbar/controllers/bottomnavbar_controller.dart:9)
E/flutter (10239): #3 _MyAppState.initState.<anonymous closure> (package:prototypeapp/main.dart:64)
E/flutter (10239): #4 _rootRunUnary (dart:async/zone.dart:1434)
E/flutter (10239): <asynchronous suspension>
E/flutter (10239):
I/flutter (10239): Null check operator used on a null value
I/flutter (10239): #0 PageRedirect.page (package:get/get_navigation/src/routes/route_middleware.dart:199)
I/flutter (10239): #1 GetMaterialApp.initialRoutesGenerate (package:get/get_navigation/src/root/get_material_app.dart:348)
I/flutter (10239): #2 _WidgetsAppState.build.<anonymous closure> (package:flutter/src/widgets/app.dart:1556)
I/flutter (10239): #3 NavigatorState.restoreState (package:flutter/src/widgets/navigator.dart:3290)
I/flutter (10239): #4 RestorationMixin._doRestore (package:flutter/src/widgets/restoration.dart:887)
I/flutter (10239): #5 RestorationMixin.didChangeDependencies (package:flutter/src/widgets/restoration.dart:873)
I/flutter (10239): #6 NavigatorState.didChangeDependencies (package:flutter/src/widgets/navigator.dart:3336)
I/flutter (10239): #7 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4914)
I/flutter (10239): #8 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #10 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #11 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #12 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #13 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #14 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #16 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #18 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #23 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #24 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #26 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #27 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #28 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #29 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #30 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #32 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #33 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #34 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #35 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #36 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #37 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #38 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #39 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #40 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #41 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #42 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #44 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #45 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #46 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #47 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #48 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #49 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #50 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #51 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #52 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #53 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #54 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #55 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #56 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #57 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #58 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #59 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #60 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928)
I/flutter (10239): #61 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #62 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #63 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4919)
I/flutter (10239): #64 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #65 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #66 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #67 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #68 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #69 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #70 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #71 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #72 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #73 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #74 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4928)
I/flutter (10239): #75 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #76 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #77 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4919)
I/flutter (10239): #78 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #79 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #80 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #81 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #82 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #83 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #84 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #85 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #86 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #87 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #88 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #89 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #90 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #91 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #92 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #93 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I/flutter (10239): #94 Element.rebuild (package:flutter/src/widgets/framework.dart:4477)
I/flutter (10239): #95 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4735)
I/flutter (10239): #96 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4729)
I/flutter (10239): #97 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3790)
I/flutter (10239): #98 Element.updateChild (package:flutter/src/widgets/framework.dart:3540)
I/flutter (10239): #99 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4780)
I have solved this problem with an alternative solution for now.
Here is the main.dart
#override
void initState() {
super.initState();
//open notif content from terminated state of the app
FirebaseMessaging.instance.getInitialMessage().then((message) {
if (message != null) {
print('TERMINATED');
final redirectRoute = message.data['route'];
print('redirectRoute $redirectRoute');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
//remove redirect route here, so the unknownRoute will trigger the default route
}
});
//only works if app in foreground
FirebaseMessaging.onMessage.listen((message) {
LocalNotificationService.display(message);
});
//onclick notif system tray only works if app in background but not termi
FirebaseMessaging.onMessageOpenedApp.listen((message) {
final redirectRoute = message.data['route'];
if (redirectRoute != null) {
print('BACKGROUND');
print('redirectRoute $redirectRoute');
bottomnavbarController.updateIndex(int.parse(redirectRoute));
Get.offAllNamed(Routes.PAGEWRAPPER);
}
});
}
#override
Widget build(BuildContext context) {
final authController = Get.put(AuthController(), permanent: true);
return FutureBuilder(
future: Future.delayed(const Duration(seconds: 6)),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return Obx(
() => GetMaterialApp(
debugShowCheckedModeBanner: false,
title: "Application",
theme: ThemeData(
appBarTheme: const AppBarTheme(
elevation: 0.2,
foregroundColor: Colors.black,
backgroundColor: Colors.white),
),
initialRoute: authController.isSkipIntro.isTrue
? authController.isAuthAndVerified.isTrue
? Routes.PAGEWRAPPER
: Routes.LOGIN
: Routes.INTRODUCTION,
getPages: AppPages.routes,
unknownRoute: authController.isAuthAndVerified.isTrue ? AppPages.routes[11] : AppPages.routes[1],
),
);
}
return FutureBuilder(
future: authController.firstInitialize(),
builder: (context, snapshot) {
return const SplashScreen();
},
);
},
);
}
I added this unknownRoute: on GetMaterialApp if the route is null which passing an array to the index of pagewrapper o login page inside AppPages class since the route in getInitialMessage() returns null.
I have define using Get.key and still returns null. Maybe app_routes.dart is not created yet before GetMaterialApp. Maybe that is why it returns null.
I still don't know why this is happening. Maybe it is a bug for GetX plugin. Anyway, this still works for me since I have updated the bottom nav index.

error with SmartRefresher in flutter (Don't use one refreshController to multiple SmartRefresher,It will cause some unexpected bugs)

here in the controller:
RefreshController refreshController = RefreshController(initialRefresh: false);
#override
void onInit() {
fetchServices();
fetchCategory();
super.onInit();
}
Future<bool> fetchServices({bool isRefresh = false}) async {
if (isRefresh) {
currentPage = 1;
} else {
if (currentPage > totalPages) {
refreshController.loadNoData();
return false;
}
}
try {
isLoading(true);
var servicesData = await ServicesDb.fetchServices(currentPage);
var services = servicesData.data;
if (services != null) {
if(isRefresh) {
servicesList.value = services;
} else {
servicesList.value.addAll(services);
}
currentPage++;
totalPages = servicesData.meta.lastPage;
return true;
} else {
return false;
}
} finally {
isLoading(false);
}
}
and in the view:
Widget build(BuildContext context) {
return Obx(() {
if(controller.isLoading.value == true || controller.isLoadingSearch.value == true) {
return const Center(child: CircularProgressIndicator(color: Colors.black,));
} else {
return SizedBox(
height: MediaQuery.of(context).size.height,
child: SmartRefresher(
controller: controller.refreshController ,
enablePullUp: true,
onRefresh: ()=> controller.onRefresh(),
onLoading: () => controller.onLoading(),
child: StaggeredGridView.countBuilder(
crossAxisCount: 2,
itemCount: controller.servicesList.length,
crossAxisSpacing: 16,
mainAxisSpacing: 16,
itemBuilder: (context, index) {
i receive this error: when make hot reload, or change the oreintaion from portrait to landscape and vice versa. and when make hot reload again the error disappear>>
======== Exception caught by widgets library =======================================================
The following assertion was thrown building Obx(has builder, state: _ObxState#8fd5c):
Don't use one refreshController to multiple SmartRefresher,It will cause some unexpected bugs mostly in TabBarView
'package:pull_to_refresh/src/smart_refresher.dart':
Failed assertion: line 608 pos 12: '_refresherState == null'
The relevant error-causing widget was:
Obx Obx:file:///F:/myServices/my_services/lib/ui/widgets/services_widget.dart:13:12
When the exception was thrown, this was the stack:
#2 RefreshController._bindState (package:pull_to_refresh/src/smart_refresher.dart:608:12)
#3 SmartRefresherState.initState (package:pull_to_refresh/src/smart_refresher.dart:519:23)
#4 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4805:57)
#5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4638:5)
... Normal element mounting (50 frames)
#55 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3673:14)
#56 Element.updateChild (package:flutter/src/widgets/framework.dart:3425:18)
#57 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1242:37)
#58 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1227:20)
#59 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2573:19)
#60 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1220:12)
#61 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:349:23)
#62 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1968:59)
#63 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:916:15)
#64 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1968:14)
#65 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:338:5)
#66 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:484:5)
#67 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:239:19)
#68 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:282:12)
#69 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#70 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:137:12)
#71 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:371:11)
#72 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#73 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:510:13)
#74 RenderShrinkWrappingViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1923:12)
#75 RenderShrinkWrappingViewport.performLayout (package:flutter/src/rendering/viewport.dart:1881:20)
#76 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#77 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#78 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#79 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#80 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#81 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#82 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#83 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#84 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#85 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#86 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#87 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#88 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#89 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#90 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#91 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#92 RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:545:11)
#93 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#94 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#95 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#96 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
#97 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1097:7)
#98 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#99 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:404:14)
#100 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#101 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#102 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#103 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#104 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1388:11)
#105 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#106 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#107 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#108 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#109 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#110 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#111 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#112 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#113 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#114 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#115 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#116 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#117 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#118 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#119 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#120 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#121 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#122 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#123 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3422:13)
#124 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#125 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#126 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#127 _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:745:15)
#128 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#129 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#130 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#131 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#132 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#133 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#134 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#135 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#136 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#137 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#138 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#139 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#140 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#141 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#142 RenderObject.layout (package:flutter/src/rendering/object.dart:1858:7)
#143 RenderView.performLayout (package:flutter/src/rendering/view.dart:165:14)
#144 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1713:7)
#145 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:885:18)
#146 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:453:19)
#147 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13)
#148 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:319:5)
#149 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1143:15)
#150 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1080:9)
#151 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:996:5)
#155 _invoke (dart:ui/hooks.dart:166:10)
#156 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:270:5)
#157 _drawFrame (dart:ui/hooks.dart:129:31)
(elided 5 frames from class _AssertionError and dart:async)
====================================================================================================
Initialized RefreshController & onRefresh function inside the Widget build(Context context)... . like this
// this is my project code
#override
Widget build(BuildContext context) {
final RefreshController homeRefreshController = RefreshController();
void onRefresh() async {
try {
await _homeController.getDashbaordInfo();
homeRefreshController.refreshCompleted();
} catch (e) {
homeRefreshController.refreshFailed();
}
}
...
It works for me.
I was using SmartRefresher in tab view so when ever I navigates to MainActivity in which all tabs are there SmartRefresher gives the same error.
This is because SmartRefresher lost its state.
Solution :
initialize SmartRefresher like this :
RefreshController refreshController = RefreshController(initialRefresh: false);
In my case when user logout and login again then mainactivity was giving error because it was getting previous state as I am using getx but smartrefresher has lost its state. so to solve this :
logoutUser() async {
Get.offAllNamed(Routes.ONBOARDING_SCREEN);
}
final _refreshControllers = <RefreshController>[
RefreshController(...),
RefreshController(...),
RefreshController(...)
];
just create multiple RefreshController instances for each SmartRefresher.
I solved it by making
class HomeCubit extends Cubit<HomeState> {
HomeCubit() : super(HomeInitial());
static HomeCubit get(context) => BlocProvider.of(context);
late RefreshController refreshController;
}
inside my logic class and inside widget class
#override
void initState() {
HomeCubit.get(context).refreshController = RefreshController(initialRefresh: false);
super.initState();
}
SmartRefresher(controller: RefreshController(), child:YourWidget() )
Make your controller like that it will not lose his state anymore your welcome
This is because you used the same RefreshController for two or more SmartRefresher widget.

Getting a black screen when using provider in Flutter to change layout after logging in

I'm using provider to handle User login in a Flutter app. I created a class called AccountManager that extends ChangeNotifier and updates a boolean that tells my main Scaffold which of two widgets to use to draw its contents.
When the app starts, I'm not logged in and it loads NotLoggedInLayout() properly, which has a form to log in. I enter my credentials, log in using the AccountManager which in turn calls notifyListeners() and tells my Consumer to redraw and change to LoggedInLayout(). I can see that it redraws to the correct screen for a short moment but then a black screen covers everything.
After that, if I press "R" to reload the app, it shows LoggedInLayout() properly because it remembers the login. But if I press "r" to hot reload, I get this error in the terminal:
Performing hot reload... ⢿
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY
╞═══════════════════════════════════════════════════════════
The following assertion was thrown building
Navigator-[GlobalObjectKey<NavigatorState>
_WidgetsAppState#1e7c5](dirty, dependencies: [HeroControllerScope,
UnmanagedRestorationScope],
state: NavigatorState#c9fc1(tickers: tracking 0 tickers)):
'package:flutter/src/widgets/navigator.dart': Failed assertion: line 5308 pos 12:
'_history.isNotEmpty': 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:
MaterialApp file:///home/bruno/Desarrollo/TinviTo/creators/lib/main.dart:20:14
When the exception was thrown, this was the stack:
#2 NavigatorState.build (package:flutter/src/widgets/navigator.dart:5308:12)
#3 StatefulElement.build
(package:flutter/src/widgets/framework.dart:4710:27)
#4 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4593:15)
#5 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#6 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#7 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#8 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#9 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#10 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#11 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#12 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#13 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#14 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#15 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#16 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#17 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#18 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#19 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#20 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#21 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#22 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#23 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#24 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#25 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#26 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#27 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#28 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#29 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#30 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#31 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#32 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#33 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#34 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#35 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#36 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#37 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#38 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#39 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#40 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#41 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#42 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#43 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#44 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#45 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#46 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#47 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#48 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#49 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#50 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#51 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#52 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#53 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#55 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#56 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#57 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#58 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#59 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#60 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#61 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#62 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#63 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#64 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#65 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#66 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#67 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#68 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#69 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#70 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#71 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#72 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#73 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#74 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#75 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#76 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#78 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#79 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#80 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#81 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#82 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#83 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#84 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#85 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#86 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#87 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#88 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#89 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#90 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#91 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#92 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#93 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#94 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#95 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#96 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#97 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#98 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#99 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#100 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#101 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#102 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#103 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#104 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#105 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#106 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#107 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#108 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#109 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#110 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#111 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#112 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#113 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#114 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#115 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#116 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#117 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#118 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#119 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#120 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#121 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#122 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#123 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#124 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#125 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#126 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#127 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#128 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#129 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#130 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#131 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#132 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#133 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#134 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#135 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#136 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#137 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#138 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#139 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#140 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#141 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#142 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#143 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#144 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#145 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#146 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#147 SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6114:14)
#148 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#149 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#150 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#151 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#152 _InheritedNotifierElement.update
(package:flutter/src/widgets/inherited_notifier.dart:181:11)
#153 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#154 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#155 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#156 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#157 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#158 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#159 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#160 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#161 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#162 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#163 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#164 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#165 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#166 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#167 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#168 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#169 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#170 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#171 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#172 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#173 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#174 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#175 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#176 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#177 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#178 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#179 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#180 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#181 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#182 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#183 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#184 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#185 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#186 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#187 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#188 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#189 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#190 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#191 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#192 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#193 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#194 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#195 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#196 StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4766:11)
#197 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#198 StatefulElement.update
(package:flutter/src/widgets/framework.dart:4798:5)
#199 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#200 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#201 _InheritedProviderScopeElement.performRebuild
(package:provider/src/inherited_provider.dart:456:11)
#202 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#203 ProxyElement.update (package:flutter/src/widgets/framework.dart:4945:5)
#204 _InheritedProviderScopeElement.update
(package:provider/src/inherited_provider.dart:477:11)
#205 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#206 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#207 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#208 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#209 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#210 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#211 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#212 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#213 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#214 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#215 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#216 StatelessElement.update
(package:flutter/src/widgets/framework.dart:4674:5)
#217 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:15)
#218 ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4618:16)
#219 Element.rebuild (package:flutter/src/widgets/framework.dart:4284:5)
#220 BuildOwner.buildScope
(package:flutter/src/widgets/framework.dart:2582:33)
#221 WidgetsBinding.drawFrame
(package:flutter/src/widgets/binding.dart:875:21)
#222 RendererBinding._handlePersistentFrameCallback
(package:flutter/src/rendering/binding.dart:328:5)
#223 SchedulerBinding._invokeFrameCallback
(package:flutter/src/scheduler/binding.dart:1144:15)
#224 SchedulerBinding.handleDrawFrame
(package:flutter/src/scheduler/binding.dart:1082:9)
#225 SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>
(package:flutter/src/scheduler/binding.dart:865:7)
(elided 6 frames from class _AssertionError, class _RawReceivePortImpl, class
_Timer, and dart:async-patch)
It seems like my provider somehow its messing with the Navigator, but I can't seem to find the cause.
This is my main code:
import 'package:creators/layouts/LoggedIn.dart';
import 'package:creators/layouts/NotLoggedIn.dart';
import 'package:creators/providers/AccountManager.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
#override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<AccountManager>(
create: (_) => AccountManager(),
),
],
child: MaterialApp(
title: 'App Title',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(
title: 'App Title',
),
debugShowCheckedModeBanner: false,
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
#override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
#override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Consumer<AccountManager>(
builder: (context, manager, child) {
bool isLoggedIn = manager.isLoggedIn;
return (isLoggedIn) ? LoggedInLayout() : NotLoggedInLayout();
},
),
);
}
}
And this is the AccountManager class:
import 'dart:convert';
import 'package:creators/models/User.dart';
import 'package:creators/services/AccountService.dart';
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
class AccountManager with ChangeNotifier {
User? _user;
User? get user => _user;
bool get isLoggedIn => _user != null;
AccountManager() {
// Inicializar variables desde la base de datos
_initData();
}
void _initData() async {
await this.loadUser();
notifyListeners();
}
Future localLogin({
required String email,
required String password,
}) async {
var result = await AccountService.localLogin(
email: email,
password: password,
);
if (result.statusCode == 200) {
String sBody = result.body;
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
await this.saveUser();
notifyListeners();
} else {
String error = jsonDecode(result.body)['message'] ?? 'Error desconocido.';
throw Exception(error);
}
}
Future localRegister({
required String name,
required String email,
required String password,
}) async {
var result = await AccountService.localRegister(
name: name,
email: email,
password: password,
);
if (result.statusCode == 200) {
String sBody = result.body;
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
await this.saveUser();
notifyListeners();
} else {
String error = jsonDecode(result.body)['message'] ?? 'Error desconocido.';
throw Exception(error);
}
}
saveUser() async {
if (_user != null) {
String bodySerialized = jsonEncode(_user!.toJson());
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('user', bodySerialized);
}
}
loadUser() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? sBody = prefs.getString('user');
if (sBody != null) {
Map<String, dynamic> body = jsonDecode(sBody);
User user = new User(
body['name'],
body['email'],
body['role'],
body['token'],
);
_user = user;
}
}
void deleteUser() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove('user');
}
void logout() {
_user = null;
this.deleteUser();
notifyListeners();
}
}
When I restart the app and it's logged in (showing LoggedInLayout()) I can press the logout button and it properly changes to NotLoggedInLayout() without the black screen. So it seems like the error only happens when I log in and not when I log out.
It's embarassing, but I found out what was happening. It was because I was popping the screen from the Navigator after logging in. I copied the form from another project of mine that didn't change the screen using provider and used Navigator.pop() instead. So my code looked like this:
await accountManager.localLogin(
email: email,
password: password,
);
Navigator.pop(context);
Since now I changed the layout using Provider and Consumer, the Navigator.pop() was not needed anymore. It was popping my first Scaffold, thus the black screen. The solution was to remove the Navigator.pop(context) line.

Flutter & Ethereum : Unhandled Exception: RangeError: Value not in range: 32

I am trying to make a simple Decentralization Application with flutter and Ethereum. But I keep on getting this error. It was working fine. Please have a look at my code and my error
I use :
Flutter
Remix Ethereum
MetaMask => Rinkeby
Infua.io
Question : Why do I get this RangerError?
Solidity
pragma solidity 0.6.6;
contract PKCoin{
int balance;
constructor() public {
balance = 0;
}
function getBalance() view public returns(int) {
return balance;
}
function depositBalance(int amount) public {
balance = balance + amount;
}
function withdrawBalance(int amount) public {
balance = balance - amount;
}
}
Flutter
#override
void initState() {
super.initState();
httpClient = Client();
// print(httpClient);
ethClient = Web3Client(
"https://rinkeby.infura.io/v3/b2a9d5831e3b4675a51144cfed03bafa",
httpClient);
getBalance(myAddress);
}
Future<DeployedContract> loadContract() async {
String abi = await rootBundle.loadString("assets/abi.json");
String contractAddress = "0xd9145CCE52D386f254917e481eB44e9943F39138";
final contract = DeployedContract(ContractAbi.fromJson(abi, "PKCoin"),
EthereumAddress.fromHex(contractAddress));
return contract;
}
// ==== This is to get the information only ==== //
// ==== Get method ==== //
Future<List<dynamic>> query(String functionName, List<dynamic> args) async {
//
final contract = await loadContract();
final ethFunction = contract.function(functionName);
// This line below doesn't work.
final result = await ethClient.call(
contract: contract, function: ethFunction, params: args);
// print(result.toString());
return result;
}
Future<void> getBalance(String targetAddress) async {
// EthereumAddress address = EthereumAddress.fromHex(targetAddress);
List<dynamic> result = await query("getBalance", []);
print('In getGreeting');
print(result[0]);
setState(() {
myData = result[0];
data = true;
});
}
Error
Performing hot restart...
Restarted application in 950ms.
E/flutter (28032): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: RangeError: Value not in range: 32
E/flutter (28032): #0 _rangeCheck (dart:typed_data-patch/typed_data_patch.dart:4807:5)
E/flutter (28032): #1 _ByteBuffer.asUint8List (dart:typed_data-patch/typed_data_patch.dart:1940:5)
E/flutter (28032): #2 _IntTypeBase.decode (package:web3dart/src/contracts/abi/integers.dart:23:31)
E/flutter (28032): #3 TupleType.decode (package:web3dart/src/contracts/abi/tuple.dart:102:29)
E/flutter (28032): #4 ContractFunction.decodeReturnValues (package:web3dart/src/contracts/abi/abi.dart:255:30)
E/flutter (28032): #5 Web3Client.call (package:web3dart/src/core/client.dart:310:21)
E/flutter (28032): <asynchronous suspension>
E/flutter (28032): #6 _MyHomePageState.query (package:greeting_blockchain/main.dart:70:36)
E/flutter (28032): <asynchronous suspension>
E/flutter (28032): #7 _MyHomePageState.getBalance (package:greeting_blockchain/main.dart:79:34)
E/flutter (28032): #8 _MyHomePageState.initState (package:greeting_blockchain/main.dart:48:5)
E/flutter (28032): #9 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4765:58)
E/flutter (28032): #10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #12 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #13 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #16 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #17 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #18 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (28032): #19 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #22 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #24 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #25 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #26 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #27 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #28 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #29 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (28032): #30 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #31 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
E/flutter (28032): #32 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4791:11)
E/flutter (28032): #33 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
E/flutter (28032): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #36 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #37 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #38 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #39 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6118:14)
E/flutter (28032): #40 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
E/flutter (28032): #41 Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
E/flutter (28032): #42 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
E/flutter (28032): #43 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
E/flutter (28032): #44 Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
E/flutter (28032): #45 ComponentElement._firstBuild (package:flutter/src/widgets/framework.d
Conclusion
Please take a look at my code and I am looking forward to see all of your answers. Thank you in advance.
Un-comment //EthereumAddress address = EthereumAddress.fromHex(targetAddress);
Future<void> getBalance(String targetAddress) async {
EthereumAddress address = EthereumAddress.fromHex(targetAddress);
List<dynamic> result = await query("getBalance", []);
print('In getGreeting');
print(result[0]);
setState(() {
myData = result[0];
data = true;
});
}