getx 和 Riverpod 有什么区别?

问题描述 投票:0回答:4

我想知道 getx 和 Riverpod 之间有什么区别。我很困惑我将在实际项目中使用这两个状态管理工具中的哪一个。

flutter state flutter-getx flutter-riverpod
4个回答
1
投票

这是一个关于该主题的精彩且最新的 YouTube 视频: https://www.youtube.com/watch?v=mxkhUYC5yF8

但是,我建议您查看 BLoC,尤其是使用它的肘节。

在我看来,Riverpod 不是一个好的选择,因为他们决定完全重新发明轮子,不使用 InheritedWidget,而是实现自己的解决方案。我永远不想与框架对抗,而是与它一起工作。


1
投票

不同之处在于Riverpod遵循单向数据流,而getx则不然。


0
投票

对于大型产品,请选择 Riverpod, 对于小型应用程序,请选择 GetX。

GetX不仅仅是一个状态管理工具,它更像是一个flutter的框架。如果您只需要一个状态管理器,您将获得所有您不需要的额外功能和实用程序。如果您使用 GetX 提供的所有功能,那么您的整个路由、materialApp、本地化、api 等都依赖于一个包。在我看来,让您的应用程序同时依赖 Flutter 和 GetX 进行维护是一场不必要的赌博。特别是如果它是一个生产应用程序。


0
投票

第一个区别是:

Riverpod只是一个状态管理包,但是GetX可以管理 路由和依赖注入(服务定位器)也是如此。这给出了 GetX 附加功能:我们可以实例化控制器(提供者) 在服务定位器内部,我们可以将控制器绑定到路由 还有更多。

另一个巨大的区别:

GetX 非常简单,特别是对于初学者来说,而 Riverpod 非常简单 复杂,尤其是对于初学者。

考虑定义控制器/提供者的两个代码片段:

获取X:

class CounterController extends GetxController {
  var count = 100.0.obs;

  increment() {
    count.value += 25;
    if (count.value > 400){
      count.value = 100;
    }
  }
}
final counterController = CounterController();

河波德:

class _CounterNotifier extends Notifier<double> {
  @override
  double build() {
    return 100.0;
  }

  void increment() {
    state += 25;
    if (state > 400) {
      state = 100;
    }
  }
}
final counterProvider =
    NotifierProvider<_CounterNotifier, double>(_CounterNotifier.new);

GetX 的语法简单、清晰、易记。您只需将

.obs
(扩展方法)添加到任何类型的变量中,这就会自动使其变得可观察。

Riverpod 的语法绝对是陌生的。什么是通知者?为什么一定要曝光呢?哦,它来自Provider包。所以,要了解Riverpod必须先了解Provider。很奇怪的要求。 而且我并不是说 Provider 不应该学习。每个学习Flutter的人都应该学习Provider和Riverpod。我的意思是 GetX 在数量级上更容易学习。

我的拙见:先学GetX,再做几个应用程序。然后,学习 Provider、Riverpod 和 BLoC。

© www.soinside.com 2019 - 2024. All rights reserved.