在 flutter 中的一个屏幕中的选项卡之间共享数据?
share data between tabs in one screen in flutter?
在一个有 3 个选项卡的屏幕中,第一个带有文本字段的选项卡用于输入数据并存储在 CutomClass 中,另外两个选项卡使用存储在 CustomClass
中的数据来查看结果。
我如何在选项卡之间共享 CustomClass
数据,以便当用户切换到其中一个时,来自 tab1 的任何更新都会反映到 tab2 和 tab3。
下面的代码适用于在 TabBarView 中有 3 个选项卡作为 3 个有状态小部件的屏幕。
我正在考虑将数据保存到 CustomClass
并在其他 2 个选项卡切换到使用更新的 CustomClass 数据时重建它们,但不知道如何实现。
有什么建议、想法或例子吗?!
class ScreenWithTabs extends StatefulWidget {
@override
_ScreenWithTabsState createState() => _ScreenWithTabsState();
}
class _ScreenWithTabsState extends State<ScreenWithTabs> {
CustomClass customClass;
@override
void initState() {super.initState();}
@override
DefaultTabController build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(tabs: [
Tab(text: 'input tab',),
Tab(text: 'output tab 1',),
Tab(text: 'output tab 2',),
]),
),
),
body: TabBarView(
children: [
InputTab(),
OutputTab1(),
OutputTab2(),
],
),
),
);
}
}
如果您不知道任何像提供者这样的状态管理,有一个简单的方法
您可以在每个选项卡中创建一个回调函数,每次发生您想要的事情时,调用该变量将其存储在变量 ScreenWithTabs 和 setState 中,并将其发送到您想要的另一个选项卡
int x;
TabBarView(
children: [
ComplatedOrdersTab(number:x),
CartTab(
refreshCallback: (int result) {
x = result;
setState(() {});
},
),
],
),
如果你不熟悉回调的实现
class CartTab extends StatefulWidget {
Function(int result) refreshCallback;
CartTab({
this.refreshCallback,
});
如果你想使用它
onTap: () {
widget.refreshCallback(1);
},
在一个有 3 个选项卡的屏幕中,第一个带有文本字段的选项卡用于输入数据并存储在 CutomClass 中,另外两个选项卡使用存储在 CustomClass
中的数据来查看结果。
我如何在选项卡之间共享 CustomClass
数据,以便当用户切换到其中一个时,来自 tab1 的任何更新都会反映到 tab2 和 tab3。
下面的代码适用于在 TabBarView 中有 3 个选项卡作为 3 个有状态小部件的屏幕。
我正在考虑将数据保存到 CustomClass
并在其他 2 个选项卡切换到使用更新的 CustomClass 数据时重建它们,但不知道如何实现。
有什么建议、想法或例子吗?!
class ScreenWithTabs extends StatefulWidget {
@override
_ScreenWithTabsState createState() => _ScreenWithTabsState();
}
class _ScreenWithTabsState extends State<ScreenWithTabs> {
CustomClass customClass;
@override
void initState() {super.initState();}
@override
DefaultTabController build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(tabs: [
Tab(text: 'input tab',),
Tab(text: 'output tab 1',),
Tab(text: 'output tab 2',),
]),
),
),
body: TabBarView(
children: [
InputTab(),
OutputTab1(),
OutputTab2(),
],
),
),
);
}
}
如果您不知道任何像提供者这样的状态管理,有一个简单的方法 您可以在每个选项卡中创建一个回调函数,每次发生您想要的事情时,调用该变量将其存储在变量 ScreenWithTabs 和 setState 中,并将其发送到您想要的另一个选项卡
int x;
TabBarView(
children: [
ComplatedOrdersTab(number:x),
CartTab(
refreshCallback: (int result) {
x = result;
setState(() {});
},
),
],
),
如果你不熟悉回调的实现
class CartTab extends StatefulWidget {
Function(int result) refreshCallback;
CartTab({
this.refreshCallback,
});
如果你想使用它
onTap: () {
widget.refreshCallback(1);
},