有没有办法防止小部件树获得焦点?
我想防止子列或任何嵌套的子项(字段1,字段2)获得焦点而不禁用这些字段,字段3 仍应是可聚焦的。如何实现呢?
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Example'),
),
body: Column(
key: Key("Parent column"),
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Column(
key: Key("Child column"),
children: <Widget>[
TextField(
key: Key("Field 1"),
),
TextField(
key: Key("Field 2"),
)
],
),
TextField(
key: Key("Field 3"),
)
],
),
);
}
答案 0 :(得分:1)
感谢@pskink的建议。
这实际上非常容易实现:只需将小部件树包装在IgnorePointer
中。 shouldIgnore
是控制 Child列的变量,它的孩子应该获得任何触摸事件。
bool shouldIgnore = true;
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Example'),
),
body: Column(
key: Key("Parent column"),
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
IgnorePointer(
ignoring: shouldIgnore,
child: Column(
key: Key("Child column"),
children: <Widget>[
TextField(
key: Key("Field 1"),
),
TextField(
key: Key("Field 2"),
)
],
),
),
TextField(
key: Key("Field 3"),
)
],
),
);
}