flutter - TabBarView 阻止导航
问题描述
我有以下问题:
我在 Flutter 中有一个带有 TapBarView 的页面。如果客户在另一个 Tap 上单击 TapBar,我想先显示一个对话框,例如“你真的要离开吗?” 带有是/否按钮。如果客户单击“否”,则所选的 Tap 不应更改。
可能吗?如果是...怎么办?
这是示例:
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")),
],
),
),
);
}
}
解决方案
尝试这个。首先,TabBar
您可以在其中添加任何小部件,因此您可以在其中放置一个按钮,并且在onPressed
函数内部,您可以为用户添加 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',
),
],
),
请让我知道这对你有没有用。
推荐阅读
- php - PhpStorm 无法检测类类型并自动完成
- java - 多模块 Maven 项目的 Spring MVC 框架问题
- mysql - 来自一个表的 SQL AVG 连接来自另一个表的名称
- arrays - 如何组合两个 3D 阵列的蒙版并将其应用于单独的 3D 阵列?
- lean - 什么是 Coq 的“修复”关键字在精益中创建固定点的等价物
- android - 在构建时使用 gradle 注入 AndroidManifest.xml
- java - 在 Java 中为 Postgres 中的枚举列使用什么类型?
- go - Why does rows.Next() depends on DB response rate?
- python - pip install pyproj 失败并出现 PermissionError
- django - 设置好 NGINX 和 Supervisor 后如何连接 websocket?