Доступ к переменным из другого класса без необходимости передавать их напрямую при вызове страницы в моем приложении Flutter

Кто-нибудь знает, как я могу получить доступ к переменным из другого класса без необходимости передавать их напрямую при вызове страницы, подобной этой Pagetwo (data: data), потому что мне не нужно открывать страницу, мне просто нужны переменные, я попытался просто импортировать класс, который я хотел и доступ к нему, как этот var newdata = otherclass.data, но я продолжаю получать сообщение об ошибке "Данные" члена экземпляра не могут быть доступны с использованием статического доступа, не уверен, что делать дальше, какое-то время исследовал


person mac    schedule 27.09.2020    source источник


Ответы (2)


Есть два способа сделать это

  1. Глобальный (что не рекомендуется)
  2. методика государственного управления (что рекомендуется)

Есть много техник государственного управления:

InheritedWidget

Scoped Model

ProviderScope

Redux

BLOC

RxVMS

MVC

rebloc

Dartea

MobX

Statelessly/Reactivity

var_widget

fish-redux

Flutter Hooks

Provider

AsyncRedux

OSAM

Get

Momentum

state_notifier (by creator of provider)

cubit (by creator of bloc)

maestro

meowchannel

no_bloc

blocstar

mvcprovider

states_rebuilder

Самый популярный метод управления состоянием - это provider, bloc, redux, getX, InheritedWidget. если вам нужен пример, дайте мне знать.

person Abhishek Ghaskata    schedule 27.09.2020
comment
Я привожу вам пример provider. - person Abhishek Ghaskata; 27.09.2020

вам нужно сделать viewModel в provider, где есть каждая переменная.

class BaseModel extends ChangeNotifier {
  int variable = 0;
  notifyChange() {
    notifyListeners();
  }

  @override
  void dispose() {
    super.dispose();
  }
}

скажем, если у вас есть два класса, и вы хотите получить доступ к той же переменной, которая находится в ViewModel, поэтому вы можете использовать для этого поставщика singleton.

Это первый класс, который находится на одной странице.

class BookDetail extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final BookModel bookModel = Provider.of(context);
    print(bookModel.variable);
   }
}

Это второй класс, который представляет собой другую страницу.

class BookDetailPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final BookModel bookModel = Provider.of(context);
    print(bookModel.variable);
   }
}
person Abhishek Ghaskata    schedule 27.09.2020
comment
для получения дополнительной информации вы можете перейти к pub.dev/packages/provider. - person Abhishek Ghaskata; 27.09.2020