是否可以通过编程方式控制 Flutter 中的选项卡(Hide/Visible)
Is it possible to control tabs(Hide/Visible) in Flutter programmatically
我有两个选项卡,每个选项卡都有一些要由用户填写的数据。在 Tab-1(个人数据)中,我有一个带有一些小部件的表单,用户必须在其中输入他的个人详细信息。
在 Tab-1 (form-1) 中填写所有详细信息后,只有 Tab-2(病史)应该可以导航并可见。如何在 Flutter 中实现?
我们可以通过维护要显示的标签栏项目的数量来实现这一点。
基本上我们必须创建两个 List<Widget>
,这将取决于要显示的标签栏数。
示例:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _tabBarCount = 1;
List<Widget> getTabBarList() { // Tab Bar items displayed on the App Bar
switch (_tabBarCount) {
case 1:
return [Tab(icon: Icon(Icons.search))];
case 2:
return [
Tab(icon: Icon(Icons.search)),
Tab(icon: Icon(Icons.file_download))
];
default:
return [];
}
}
List<Widget> getTabScreen() { // Screens to be displayed on Tab Bar
switch (_tabBarCount) {
case 1:
return [
RaisedButton(onPressed: () {
setState(() {
_tabBarCount = 2; // Click event, here tab bar count should increse, so that multiple tab bar can be visible.
});
}, child: Text('Save'),)
];
case 2:
return [
Text('First Screen'),
Text('Second Screen')
];
default:
return [];
}
}
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: _tabBarCount,
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
bottom: TabBar(
tabs: getTabBarList(),
),
title: Text('Tabs Demo'),
),
body: TabBarView(
children: getTabScreen(),
),
),
),
);
}
}
我有两个选项卡,每个选项卡都有一些要由用户填写的数据。在 Tab-1(个人数据)中,我有一个带有一些小部件的表单,用户必须在其中输入他的个人详细信息。
在 Tab-1 (form-1) 中填写所有详细信息后,只有 Tab-2(病史)应该可以导航并可见。如何在 Flutter 中实现?
我们可以通过维护要显示的标签栏项目的数量来实现这一点。
基本上我们必须创建两个 List<Widget>
,这将取决于要显示的标签栏数。
示例:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _tabBarCount = 1;
List<Widget> getTabBarList() { // Tab Bar items displayed on the App Bar
switch (_tabBarCount) {
case 1:
return [Tab(icon: Icon(Icons.search))];
case 2:
return [
Tab(icon: Icon(Icons.search)),
Tab(icon: Icon(Icons.file_download))
];
default:
return [];
}
}
List<Widget> getTabScreen() { // Screens to be displayed on Tab Bar
switch (_tabBarCount) {
case 1:
return [
RaisedButton(onPressed: () {
setState(() {
_tabBarCount = 2; // Click event, here tab bar count should increse, so that multiple tab bar can be visible.
});
}, child: Text('Save'),)
];
case 2:
return [
Text('First Screen'),
Text('Second Screen')
];
default:
return [];
}
}
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: _tabBarCount,
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
bottom: TabBar(
tabs: getTabBarList(),
),
title: Text('Tabs Demo'),
),
body: TabBarView(
children: getTabScreen(),
),
),
),
);
}
}