使用 Obx,得到这个错误:[Get] 检测到 GetX 使用不当
Posted
技术标签:
【中文标题】使用 Obx,得到这个错误:[Get] 检测到 GetX 使用不当【英文标题】:Using Obx, got this error: [Get] the improper use of a GetX has been detected 【发布时间】:2021-07-16 00:05:16 【问题描述】:请帮助我。我做错什么了?我收到错误:
[Get] the improper use of a GetX has been detected.
这是代码:
class MealRecipesItem extends StatefulWidget
const MealRecipesItem(
Key? key,
@required this.gender,
this.item,
) : super(key: key);
final int? gender;
final Data? item;
@override
_MealRecipesItemState createState() => _MealRecipesItemState(item?.id);
class _MealRecipesItemState extends State<MealRecipesItem>
final itemId;
_MealRecipesItemState(this.itemId)
Get.put(RecipeDetailController(), tag: itemId);
@override
Widget build(BuildContext context)
var controller = Get.find<RecipeDetailController>(tag: itemId);
_toggleFavorite()
controller.toggleFavorite(widget.item?.databaseId);
return Material(
child: InkWell(
onTap: _toggleFavorite,
child: Container(
child: Obx(() // ====**** ERROR IN THIS LINE ****====
if (controller.isLoading)
return CircularProgressIndicator();
if (controller.resultToggleFavorite?.isUserFavorite ?? false)
return Icon(
Icons.favorite,
);
return Icon(
Icons.favorite_border,
);
),
),
),
);
在我的情况下使用 Obx 的正确方法是什么?什么是正确的代码?
感谢您的帮助。
【问题讨论】:
您需要提供完整的代码/数据才能重现错误。顺便说一句,GetX 优先与无状态小部件一起使用。 【参考方案1】:您的控制器变量似乎没有一个是可观察的(例如,isLoading
)。它们不是 Rx 类型,而是普通的 dart 类型。 Obx 或 GetX 仅用于 observables(.obs) 或 Rx 变量。它们就像 StreamBuilder。
因此,如果您不使用可观察对象,则无需使用 Obx 或 GetX。或者你可以让你的变量可观察。
【讨论】:
就是这样!谢谢。一旦我使用 obs,我的问题就解决了以上是关于使用 Obx,得到这个错误:[Get] 检测到 GetX 使用不当的主要内容,如果未能解决你的问题,请参考以下文章
我正在使用 Getx 进行状态管理,当我将数据添加到服务器时,它不会在列表视图中出现更新的数据,直到热重启而列表视图位于 Obx 中