class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(
value: Auth(),
// value: Auth(),
),
),
],
child: MaterialApp(
home: Consumer<Auth>(builder: (ctx, auth, _) {
return auth.isAuth
? ProfileScreen()
: LoginScreen()
}),
),
);
}
}
在此代码中,如果在身份验证提供程序中更改了isAuth属性,并调用了notifyListeners(),则“我的应用”屏幕将不收听该消息!有什么问题吗?
答案 0 :(得分:0)
MyApp
无法收听,因为您没有在Provider.of(context)
方法中使用build()
。在当前代码中,每次更改值时都会调用Consumer
的{{1}}方法。
答案 1 :(得分:0)
使用此:
import xarray as xr
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
air = xr.tutorial.open_dataset('air_temperature').air[0]
fig = plt.figure(figsize=(14,5))
ax1 = fig.add_subplot(121,
projection=ccrs.PlateCarree(central_longitude=180))
air.plot.pcolormesh(ax=ax1,
transform=ccrs.PlateCarree(),
cbar_kwargs={'orientation':'horizontal'})
ax1.coastlines()
ax1.set_extent((air.lon[0], air.lon[-1], air.lat[-1], air.lat[0]),
crs=ccrs.PlateCarree())
ax2 = fig.add_subplot(122)
air.mean('lon').plot(ax=ax2, y='lat')
plt.tight_layout()