Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在页面视图中的页面之间滑动时关闭键盘_Flutter - Fatal编程技术网

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()
      ],
    );
  }
}