我正在使用提供程序来更新我的小部件,但是当我切换选项卡时它不会更新。我用错了吗?
图表.dart
Widget chart(BuildContext context, ChartType chartType) {
return FutureBuilder<void>(
future: Provider.of<ChartModel>(context, listen: false).loadChartHabits(),
builder: (context, data) => Container(
Text(data);
);
);
}
class Charts extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
<Tab>[
Tab(text: Constants.weekly),
Tab(text: Constants.monthly),
],
),
title: Text('Tabs Demo'),
),
body: TabBarView(
children: [
chart(context, ChartType.Weekly),
chart(context, ChartType.Monthly),
],
),
),
),
);
}
}
我也在 main.dart 中添加了这个MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => TodayModel()),
ChangeNotifierProvider(create: (_) => ChartModel()),
],
更新:它在我放置加载图表后工作,但这是加载数据的正确方法而不是需要等待吗?我需要等待数据回来。 appBar: TabBar(
tabs: <Tab>[
Tab(text: Constants.weekly),
Tab(text: Constants.monthly),
],
onTap: (value) {
Provider.of<ChartModel>(context, listen: false).loadChart(ChartType.values[value]);
},
),
最佳答案
你应该使用 Consumer 而不是 FutureBuilder
return Consumer<ChartModel>(
builder: (_, provider, __) {
return Container(child:Text(provider.data));
},
);
关于flutter - 在 2 个选项卡之间切换时,Tabview 未随提供程序更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60244972/