Flutter 在页面视图中的页面之间滑动时关闭键盘
我正在尝试使用Flutter 在页面视图中的页面之间滑动时关闭键盘,flutter,Flutter,我正在尝试使用PageView小部件在screen2(有一个文本字段)和screen1之间滑动键盘。我尝试调用Focus.of(context.unfocus();在屏幕2的处理方法中。但键盘仍保留。。这里有一个最小的例子 import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget bu
PageView
小部件在screen2(有一个文本字段)和screen1之间滑动键盘。我尝试调用Focus.of(context.unfocus()
;在屏幕2的处理方法中。但键盘仍保留。。这里有一个最小的例子
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: const Text('Welcome to Flutter'),
),
body: PageView(
children: [
Screen1(),
Screen2(),
],
)),
);
}
}
class Screen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text("Screen1");
}
}
class Screen2 extends StatefulWidget {
@override
_Screen2State createState() => _Screen2State();
}
class _Screen2State extends State<Screen2> {
@override
void dispose() {
Focus.of(context).unfocus();
super.dispose();
}
@override
Widget build(BuildContext context) {
return
Column(
children: [
Text("Screen2"),
TextField()
],
);
}
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“欢迎来到弗利特”,
家:脚手架(
appBar:appBar(
标题:const Text(“欢迎来到flatter”),
),
正文:页面视图(
儿童:[
屏幕1(),
屏幕2(),
],
)),
);
}
}
类Screen1扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回文本(“屏幕1”);
}
}
类Screen2扩展了StatefulWidget{
@凌驾
_Screen2State createState()=>u Screen2State();
}
类2状态扩展状态{
@凌驾
无效处置(){
Focus.of(context.unfocus();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回
纵队(
儿童:[
文本(“屏幕2”),
TextField()
],
);
}
}
如果要在页面上滑动时关闭键盘,可以使用onPageChanged属性,使用WidgetsBinding.instance?.focusManager.primaryFocus?.unfocus()在用户滚动每页且存在焦点时执行
我把你的代码修改了
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Welcome to Flutter',
home: Scaffold(
appBar: AppBar(
title: const Text('Welcome to Flutter'),
),
body: PageView(
onPageChanged: (index) {
WidgetsBinding.instance?.focusManager.primaryFocus?.unfocus();
},
children: [
Screen1(),
Screen2(),
],
)
),
);
}
}
class Screen1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text("Screen1");
}
}
class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: [
Text("Screen2"),
TextField()
],
);
}
}