gpt4 book ai didi

flutter - 在 2 个选项卡之间切换时,Tabview 未随提供程序更新

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

我正在使用提供程序来更新我的小部件,但是当我切换选项卡时它不会更新。我用错了吗?
图表.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/

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