简体   繁体   English

如何在 indexedStack Flutter 打开键盘时隐藏 positionWigdet

[英]How to hide positionWigdet when keyboard is open at indexedStack Flutter

I used IndexedStack in my main.dart, I am using 3 different pages here.我在 main.dart 中使用了 IndexedStack,我在这里使用了 3 个不同的页面。 Like x.dart, y.dart, z.dart.像 x.dart、y.dart、z.dart。

I have such a banner on page X. Bottom 0 is coming.我在第 X 页上有这样的横幅。底部 0 来了。 Appears when the keyboard is on.键盘打开时出现。 I want to hide this when the keyboard is open.我想在键盘打开时隐藏它。 But since indexedstack is in main.dart, I cannot control keyboard open / not on x.dart page.但由于 indexedstack 在 main.dart 中,我无法控制键盘打开/不在 x.dart 页面上。

How can I hide this while the keyboard is on?键盘打开时如何隐藏它? I would appreciate it if you could help.如果您能提供帮助,我将不胜感激。

Banner code here.横幅代码在这里。

  return Positioned(
            width: _bannerAd.size.width.toDouble(),
            height: _bannerAd.size.height.toDouble(),
            child: Align(
              child: Container(
                width: _bannerAd.size.width.toDouble(),
                height: _bannerAd.size.height.toDouble(),
                color: Colors.transparent,
                child: child,
              ),
            ));

You can make use of flutter_keyboard_visibility package:您可以使用flutter_keyboard_visibility package:

  • Import package in your pubspec.yaml.在您的 pubspec.yaml 中导入 package。
  • Run flutter pub get .运行flutter pub get
  • In your main.dart code wrap your indexed stack with KeyboardVisibilityBuilder and use it to hide your Positioned X widget like so:在您的main.dart代码中,使用KeyboardVisibilityBuilder包装您的索引堆栈,并使用它来隐藏您的Positioned X 小部件,如下所示:
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';

@override
Widget build(BuildContext context) {
  return KeyboardVisibilityBuilder(
    builder: (context, isKeyboardVisible) {
      return IndexedStack(
               index: 1,
               children: <Widget>[
                 if(!isKeyboardVisible) XWidget(),
                 YWidget(),
                 ZWidget(),
                 ],
               )
             }
          );

If you need to hide only part of Positioned widget, just pass isKeyboardVisible to your X widget and conditionally hide your banner same way.如果您只需要隐藏 Positioned 小部件的一部分,只需将isKeyboardVisible传递给您的 X 小部件并以同样的方式有条件地隐藏您的横幅。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM