J’aimerais partager avec vous un petit problème que j’ai rencontré en passant une Map avec différents Components comme paramètres à un autre Component, dont certains contiennent le mixin RiverpodComponentMixin.
Avec le code suivant, si vous ajoutez un Component contenant le mixin RiverpodComponentMixin, puis le supprimez et l’ajoutez à nouveau, vous rencontrerez un problème.
class MyRiverpodComponent extends Component with RiverpodComponentMixin {
late TextComponent textComponent;
String title = "Example";
@override
FutureOr<void> onLoad() {
add(
textComponent = TextComponent(
text: title,
textRenderer: TextPaint(style: const TextStyle(fontSize: 48)),
),
);
return super.onLoad();
}
@override
void onMount() {
addToGameWidgetBuild(() => ref.listen(titleProvider, (previous, String newTitle) {
title = newTitle;
}));
super.onMount();
}
}
class MyComplexComponent extends Component {
final Map<String, Component> mapComponent = {
"title": MyRiverpodComponent(),
"text": SimpleTextComponent(),
};
@override
void onLoad() {
.
.
.
À la place, vous devrez utiliser le Builder de ces Components.
class MyComplexComponent extends Component {
final Map<String, Component Function()> mapComponent = {
"title": () => MyRiverpodComponent(),
"text": () => SimpleTextComponent(),
};
@override
void onLoad() {
.
.
.