【问题标题】:want to use one getx controller in other getx controller想在另一个 getx 控制器中使用一个 getx 控制器
【发布时间】:2022-01-23 09:12:30
【问题描述】:

我有 Flutter 应用,而且我的应用中有很多 get 控制器

我的应用是餐厅类型的应用,在主屏幕中显示餐厅列表,当我点击任何餐厅卡片时,我会将用户导航到详细信息页面

所以我创建了两个控制器,一个是家庭控制器,第二个是 resDetail 控制器

当我在餐厅详细信息屏幕中按赞按钮时,我想在主屏幕的那家餐厅上添加赞,我不知道如何在颤振中实现它

当我尝试在 detailcontroller 中获取 homecontroller 上的实例时,它会抛出错误,例如使用 get.lazy put 我使用 get.lazy put 但仍然无法使用它

这里是代码示例:-

第一个控制器

class HomeController extends GetXController{

///This controller is for  Home Screen 
List<Restuarants>  resList = <Restuarants >[];

   void getRestaurants(){

   //resList come from api
   }
}

当我使用 api 改变餐厅的价值时,它会改变 resList 中餐厅的价值

第二控制器

///This controller is for  Restaurant Detail Screen 
class ResDetailController extends GetXController{


void likeRestauranrt(String resId){

ResponseItem result =
        ResponseItem(data: null, message: errorText, status: false);
    result = await HomeRepo().likeRestaurant(resToken, likeVal, userToken);
    Loader().hideLoading();
    try {
      if (result.status) {
        final val =
   resList.firstWhere((item) => item.detail.resToken == resToken);
        val.detail.isLike = likeVal == 1;
        if (likedRestaurantList.isNotEmpty) {
          for (int i = 0; i < likedRestaurantList.length; i++) {
            if (likedRestaurantList[i].detail.resToken == resToken) {
             likedRestaurantList.removeAt(i);
             break;
           }
           }
         }

        resList[index].detail.isLike = likeVal == 1;
      }
    } catch (e) {
      showAppSnackBar(errorText);
    }
    update();
}

}

【问题讨论】:

    标签: android ios flutter dart flutter-getx


    【解决方案1】:

    尝试使用初始绑定

    一些绑定示例:-

    class InitialBinding implements Bindings {
      @override
      void dependencies() {
        Get.lazyPut(() => HomeController(), fenix: true);
        Get.lazyPut(() => ResDetailController(), fenix: true);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-08-09
      • 2021-11-02
      • 2022-01-18
      • 1970-01-01
      • 2021-12-11
      • 2023-01-17
      • 2021-08-09
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多