【问题标题】:Flutter access method of ViewModel into another ViewModel将 ViewModel 的访问方法 Flutter 到另一个 ViewModel 中
【发布时间】:2021-06-13 11:22:29
【问题描述】:

我遇到了与视图模型相关的问题。 我需要访问这个 viewModel 的方法:

class TheacerViewModel{
  Teacher _teacherX;

  TeacherViewModel(Teacher teacherX): _teacherX = teacherX;

  String get name{
    return _teacherX.name;
  }
  
  String get surname{
    return _teacherX.surname;
  }
  
  int get age{
    return _teacherX.age;
  }    
}

进入这个 viewModel:

class CourseViewModel{
  Course _courseX;

  CourseViewModel(Course courseX): _courseX = courseX;

  String get subject{
    return _courseX.subject;
  }

    /*
    my solution (not working)
  Teacher get teacher{
    return _courseX.theacer;
  }
  */
}

我的解决方案不起作用。 这件事有可能吗?

我已经创建了教师和课程模型。

谢谢。

@towhid 评论

现在我必须更新这部分代码(可能只是最后一行)并将“老师:老师”添加到 CourseViewModel(...),但是如何? 因为 course.map 不允许我添加 2 个参数。

List<CourseViewModel> coursesL = List<CourseViewModel>();

  void courses() async {
    List<Course> courses = await WebService().fetchCourses();
    notifyListeners();
    this.coursesL = courses.map((courseX) => CourseViewModel(courseX: courseX)).toList();

【问题讨论】:

    标签: flutter mvvm viewmodel view-model-pattern


    【解决方案1】:

    一种理想的方法是首先创建独立的 ViewModel,然后将该实例传递给依赖的 ViewModels 构造函数以使用其方法和属性。这样,您可以避免创建任何不必要的实例。

    class CourseViewModel{
      Course _courseX;
      Teacher _teacher;
    
      CourseViewModel(Course courseX, Teacher teacher): _courseX = courseX, _teacher = teacher;
    
      String get subject{
        return _courseX.subject;
      }
    
      Teacher get teacher => _teacher;
    
    }
    

    【讨论】:

    • 好的,但现在我必须更新我添加到问题中的部分代码。
    • 你说你已经实例化了 Teacher 对象。您只需在此处将其作为参数传递即可。
    • 不,我只有教师模型课。如果我通过“teacher: courseX.teacher”,我将无法使用 TeacherViewModel 中的 get 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2021-08-25
    • 2013-06-01
    • 2022-11-25
    • 1970-01-01
    相关资源
    最近更新 更多