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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 TabBarView阻止导航_Flutter_Dart - Fatal编程技术网

Flutter TabBarView阻止导航

Flutter TabBarView阻止导航,flutter,dart,Flutter,Dart,我有以下问题: 我有一个页面上有一个Flitter中的TapBarView。 如果客户在另一次点击时点击点击点击栏,我想先显示一个对话框,比如“你真的想离开吗?”以及“是/否”按钮。 如果客户单击“否”,则所选的抽头不应改变 可能吗?如果是。。。怎么做 以下是一个例子: import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; void main() =&g

我有以下问题:

我有一个页面上有一个Flitter中的TapBarView。 如果客户在另一次点击时点击点击点击栏,我想先显示一个对话框,比如“你真的想离开吗?”以及“是/否”按钮。 如果客户单击“否”,则所选的抽头不应改变

可能吗?如果是。。。怎么做

以下是一个例子:

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
     
    void main() => runApp(MyApp());
     
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
        primarySwatch: Colors.blue,
          ),
          home: MyHomePage(),
        );
      }
    }
     
    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
     
    class _MyHomePageState extends State<MyHomePage> {
      @override
      Widget build(BuildContext context) {
        return DefaultTabController(
          length: 2,
          child: Scaffold(
        appBar: AppBar(
          bottom: TabBar(
            tabs: [
              Tab(icon: Icon(Icons.android), text: "Tab 1",),
              Tab(icon: Icon(Icons.phone_iphone), text: "Tab 2"),
            ],
          ),
          title: Text('TutorialKart - TabBar & TabBarView'),
        ),
        body: TabBarView(
          children: [
            Center( child: Text("Page 1")),
            Center( child: Text("Page 2")),
          ],
        ),
          ),
        );
      }
    }
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(),
);
}
}
类MyHomePage扩展StatefulWidget{
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回DefaultTabController(
长度:2,
孩子:脚手架(
appBar:appBar(
底部:选项卡栏(
选项卡:[
选项卡(图标:图标(Icons.android),文本:“tab1”,
标签(图标:图标(Icons.phone\u iphone),文本:“标签2”),
],
),
标题:文本('TutorialKart-TabBar和TabBarView'),
),
正文:选项卡视图(
儿童:[
居中(子项:文本(“第1页”),
居中(子项:文本(“第2页”),
],
),
),
);
}
}

试试这个。首先,在
选项卡栏
中,您可以添加任何小部件,因此您可以在那里放置一个按钮,并在
on pressed
功能中,为用户添加alertDialog:

 TabBar(
            labelColor: Colors.black,
            tabs: [
              ElevatedButton(
                child: Text('First Tab'),
                onPressed: () {
                        //logic for the AlertDialog and inside the AlertDialog you can Navigate to the other tab
                             },
              ),
              Tab(
                text: 'Second Tab',
              ),
            ],
          ),

让我知道它是否适合您。

创建一个全局变量,int pageIndex=0;然后在TabBar中有一个函数onTap。onTap:(newIndex){if(newIndex!=pageIndex)showAlertbox();}您好,您的代码将显示一个弹出窗口,但它不会阻止导航到另一个索引。您好,它可以工作,但仍然可以用手势导航(向左或向右滑动)