【发布时间】:2021-08-27 08:54:04
【问题描述】:
布局有两个选项卡,一个用于输入,另一个用于输出,带有一个用于切换选项卡的tabBar。
在输入选项卡中有一个带有验证功能的表单,它应该在切换到输出选项卡之前验证输入,因为如果输入无效,输出会显示错误。
当用户从 tabBar 点按输出选项卡进行切换时,如何强制验证? .. 这意味着除非输入有效,否则不会更改选项卡。
带有标签代码的主屏幕:
class MainScreen extends StatefulWidget {
@override
_ MainScreen createState() => _ MainScreen();
}
class _MainScreenState extends State< MainScreen > {
Data _data;
@override
DefaultTabController build(BuildContext context) {
return DefaultTabController(
length: 1,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(tabs: [
Tab(text: 'input',
Tab(text: 'calculations']),
title: Text("screen title"),
),
body: TabBarView(
physics: NeverScrollableScrollPhysics(),
children: [
InputTab(
data: _data,
refreshDataClass: (Data dataUpdated) {_data = dataUpdated;},
),
CalculationsTab(data: _data),
]),
),
);
}
}
在输入选项卡中有一个带有输入字段的表单
@override
SafeArea build(BuildContext context) {
return SafeArea(
child: Form(
key: _formKey,
child: Scrollbar() ....
【问题讨论】:
-
添加相关代码以获得更好的帮助
-
在
TabBarView上添加NeverScrollableScrollPhysics()后,你还能滑动标签吗? -
NeverScrollableScrollPhysics() 禁用选项卡之间的滑动,因此用户只能在 tabBar 中点击选项卡名称进行切换.. 需要的是切换(无论选项卡之间切换的方式)只有当输入是有效,以避免在输出选项卡中出现意外或不正确的结果
-
您可以使用Rxdart 或任何将触发或观察的语句技术,一旦所有字段在第一个选项卡上有效,否则如果发现任何字段无效,则可以触发并收听
TabBarView上的那个流 -
能否展示示例代码
标签: forms flutter dart flutter-layout flutter-test