Почему модель не может получить доступ к другой модели с помощью провайдера?

Я хочу сделать это (невозможно):

class Model1 extends ChangeNotifier {
...
  final List<Item> items = [];
}


class Model2 extends ChangeNotifier {

void performOperation() {
//Access items from Model1 here
final newItems = Provider.of<Model1>(context).items,
...
}


}

Кажется, предложение использовать ChangeNotifierProxyProvider
Но это кажется очень неэффективным. Почему я должен создать еще один слой с ChangeNotifierProxyProvider, если я еще не использую это значение в пользовательском интерфейсе? Я просто хочу смешать Model1 и Model2 для бизнес-логики здесь.

Спасибо за помощь!


person FlutterFirebase    schedule 17.08.2019    source источник


Ответы (1)


Одна модель не может получить доступ к другой модели с помощью провайдера, потому что модели не являются виджетами, они ничего не знают о провайдерах и контекстах.
Если вы не хотите использовать ChangeNotifierProxyProvider, вы можете извлечь общую логику, чтобы отделить класс или метод и использовать ее повторно. модели внутри.

person Mikhail Ponkin    schedule 17.08.2019
comment
Это функция, которую provider может добавить? - person FlutterFirebase; 17.08.2019
comment
Нет, дело не в провайдере. Провайдер — это способ связать виджеты и данные, но не организацию бизнес-логики - person Mikhail Ponkin; 17.08.2019
comment
Спасибо за ответ! Как я могу лучше организовать бизнес-логику? - person FlutterFirebase; 17.08.2019