gpt4 book ai didi

flutter - 使用 RiverPod 和 StateNotifiers 在加载时调用函数

转载 作者:行者123 更新时间:2023-12-02 18:59:27 25 4
gpt4 key购买 nike

我正在关注 Resocoder tutorial关于如何使用 RiverPod 和 StateNotifier 管理状态。

关于如何在初始加载时使用默认值调用 .getWeather 让我大吃一惊。该示例仅说明了在 onPressed(..) 函数中使用 context.read(..),这是 riverpod 文档中推荐的。

但是您实际上如何在加载时进行调用,因为这意味着在构建方法中调用 context.read,这是非常不鼓励的。 (在本 section 的最后一部分提到)

最佳答案

因为 .getWeather 是一个 Future 函数,你实际上可以在 WeatherNotifier 的构造函数中添加 future 的初始化,让它自己更新状态。

final weatherNotifierProvider = StateNotifierProvider(
(ref) => WeatherNotifier(ref.watch(weatherRepositoryProvider)),
);


class WeatherNotifier extends StateNotifier<WeatherState> {
final WeatherRepository _weatherRepository;

WeatherNotifier(this._weatherRepository) : super(WeatherInitial()){
getWeather('some city name'); // add here
}

Future<void> getWeather(String cityName) async {
try {
state = WeatherLoading();
final weather = await _weatherRepository.fetchWeather(cityName);
state = WeatherLoaded(weather);
} on NetworkException {
state = WeatherError("Couldn't fetch weather. Is the device online?");
}
}
}

关于flutter - 使用 RiverPod 和 StateNotifiers 在加载时调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65763713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com