Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 是否可以通过编程方式控制颤振中的选项卡(隐藏/可见)_Flutter_Flutter Navigation - Fatal编程技术网

Flutter 是否可以通过编程方式控制颤振中的选项卡(隐藏/可见)

Flutter 是否可以通过编程方式控制颤振中的选项卡(隐藏/可见),flutter,flutter-navigation,Flutter,Flutter Navigation,我有两个选项卡,每个选项卡上都有一些数据需要用户填写。在表1(个人数据)中,我有一个表单,其中包含一些小部件,用户必须在其中输入个人详细信息 在表1(表1)中填写所有详细信息后,只有表2(病史)应导航并可见。如何在颤振中实现这一点?我们可以通过保持要显示的选项卡栏项目的数量来实现这一点。 基本上,我们必须创建两个列表,这取决于要显示的选项卡栏计数 示例: class MyApp extends StatefulWidget { @override _MyAppState createSt

我有两个选项卡,每个选项卡上都有一些数据需要用户填写。在表1(个人数据)中,我有一个表单,其中包含一些小部件,用户必须在其中输入个人详细信息


在表1(表1)中填写所有详细信息后,只有表2(病史)应导航并可见。如何在颤振中实现这一点?

我们可以通过保持要显示的选项卡栏项目的数量来实现这一点。 基本上,我们必须创建两个
列表
,这取决于要显示的选项卡栏计数

示例:

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(),
          ),
        ),
      ),
    );
  }
}
类MyApp扩展StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
int_tabBarCount=1;
列出应用程序栏上显示的getTabBarList(){//选项卡栏项目
开关(_tabBarCount){
案例1:
返回[选项卡(图标:图标(Icons.search))];
案例2:
返回[
选项卡(图标:图标(Icons.search)),
选项卡(图标:图标(Icons.file_下载))
];
违约:
返回[];
}
}
列出要在选项卡栏上显示的屏幕
开关(_tabBarCount){
案例1:
返回[
升起按钮(按下时:(){
设置状态(){
_tabBarCount=2;//单击事件,此处的选项卡栏计数应增加,以便可以看到多个选项卡栏。
});
},子项:文本('Save'),)
];
案例2:
返回[
文本(“第一屏”),
文本('第二屏')
];
违约:
返回[];
}
}
小部件构建(构建上下文){
返回材料PP(
主页:DefaultTabController(
长度:\ tabBarCount,
孩子:脚手架(
背景颜色:Colors.white,
appBar:appBar(
底部:选项卡栏(
制表符:getTabBarList(),
),
标题:文本(“选项卡演示”),
),
正文:选项卡视图(
儿童:GetAbscreen(),
),
),
),
);
}
}

您可以动态替换内容。请分享更多详细信息或应用程序Wireframe在tab-1中说,如果用户填写了文本表单字段小部件,则在按下Raised按钮时,应打开下一个选项卡(tab-2和另一个文本表单字段)。简单地说,在填写tab-1的表单之前,tab-2数据不应该是可见的和可访问的。如果您不希望它可见,为什么要为这样的要求设置选项卡?你能分享图像/线框以便更好地理解吗?太好了。它符合我的要求,变化不大。谢谢