Кто-нибудь знает, как я могу получить доступ к переменным из другого класса без необходимости передавать их напрямую при вызове страницы, подобной этой Pagetwo (data: data), потому что мне не нужно открывать страницу, мне просто нужны переменные, я попытался просто импортировать класс, который я хотел и доступ к нему, как этот var newdata = otherclass.data, но я продолжаю получать сообщение об ошибке "Данные" члена экземпляра не могут быть доступны с использованием статического доступа, не уверен, что делать дальше, какое-то время исследовал
Доступ к переменным из другого класса без необходимости передавать их напрямую при вызове страницы в моем приложении Flutter
Ответы (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
Я привожу вам пример
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
для получения дополнительной информации вы можете перейти к pub.dev/packages/provider.
- person Abhishek Ghaskata; 27.09.2020