小智 7
要在文本字段获得焦点时滚动到文本字段,您需要使用 Scrollable.ensureVisible 方法。这里有一些代码向您展示如何使用它。我希望它有帮助!
问候。
class TextFieldVisibility extends StatefulWidget {
const TextFieldVisibility({Key? key}) : super(key: key);
@override
State<TextFieldVisibility> createState() => TextFieldVisibilityState();
}
class TextFieldVisibilityState extends State<TextFieldVisibility> {
final _key1 = GlobalKey<State<StatefulWidget>>();
final _key2 = GlobalKey<State<StatefulWidget>>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Column(
children: [
Container(
color: Colors.orange,
height: 1000,
),
TextField(
key: _key1,
onTap: () {
ensureVisibleOnTextArea(textfieldKey: _key1);
},
),
TextField(
key: _key2,
onTap: () {
ensureVisibleOnTextArea(textfieldKey: _key2);
},
)
],
),
));
}
Future<void> ensureVisibleOnTextArea(
{required GlobalKey textfieldKey}) async {
final keyContext = textfieldKey.currentContext;
if (keyContext != null) {
await Future.delayed(const Duration(milliseconds: 500)).then(
(value) => Scrollable.ensureVisible(
keyContext,
duration: const Duration(milliseconds: 200),
curve: Curves.decelerate,
),
);
// Optional if doesnt work with the first
// await Future.delayed(const Duration(milliseconds: 500)).then(
// (value) => Scrollable.ensureVisible(
// keyContext,
// duration: const Duration(milliseconds: 200),
// curve: Curves.decelerate,
// ),
// );
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |