-
-
Notifications
You must be signed in to change notification settings - Fork 932
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
provider to riverpod with param #72
Comments
Local state is not supported by providers. What is your use-case in creating the ChangeNotifier locally like that? |
EditQuestionScreen build before firebase fetch and deserialize. Actually I just need to know, can I create global provider with widget params in riverpod? Like this class AHookWidget extends HookWidget {
AHookWidget({this.question, this.answers});
final QuestionModel question;
final List<AnswerModel> answers;
// i dont want local variable like this, i want global
final aProvider = ChangeNotifierProvider(
(ref) => QuestionProvider(question: this.question, answers: this.answers));
@override
Widget build(BuildContext context) {
final provider = useProvider(aProvider);
return Container();
}
}
class ASubHookWidget extends HookWidget {
@override
Widget build(BuildContext context) {
final provider = useProvider(aProvider);
return Container();
}
} |
No you can't |
I'm sorry to hear that, thank you for your help anyway 😊 |
I mean, there's likely a different way to do what you want. |
may be stupid but like this onPressed: () async {
QuestionModel question = await api.getQuestion();
List<AnswerModel> answers = await api.getAnswers();
MaterialPageRoute(builder: (context) =>
EditQuestionScreen(question: question, answers: answers));
} class EditQuestionScreen extends StatelessWidget {
EditQuestionScreen({this.question, this.answers});
final QuestionModel question;
final List<AnswerModel> answers;
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => QuestionProvider(
question: this.question,
answers: this.answers),
child: Container());
}
} |
Put the questions and answers inside a provider |
Ok, i will do that, the problem will be solved that case. Thanks again, you saved me. |
I think ScopedProvider is the solution. final scopedProvider = ScopedProvider<String>((_) => throw UnimplementedError());
class AWidget extends HookWidget {
AWidget({@required this.value});
final String value;
@override
Widget build(BuildContext context) {
return ProviderScope(
overrides: [scopedProvider.overrideWithValue(this.value)],
child: BWidget()
);
}
}
class BWidget extends HookWidget {
@override
Widget build(BuildContext context) {
final providerValue = useProvider(scopedProvider);
return Text(providerValue);
}
} |
Firstly, thanks a thousand times fot these great packages.
I wanted to move my entire project from provider to riverpod. But i’m stuck at this point.
This is my provider widget for subwidgets. Its initialize only once. How can I move this class to Hook Widget with riverpod?
The text was updated successfully, but these errors were encountered: