Flutter自动隐藏键盘插件auto_hide_keyboard的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter自动隐藏键盘插件auto_hide_keyboard的使用

auto_hide_keyboard 是一个Flutter插件,用于在点击屏幕其他区域时自动隐藏键盘。以下是该插件的基本介绍和使用示例。

🔥 预览

Demo GIF

✨ 特性

  • 🔮 Magic: 同时响应页面上其他小部件的点击事件并自动隐藏键盘。
  • 🔢 支持单个页面上的多个TextField而不互相干扰
  • 📋 不影响TextField原有的选择、复制和粘贴功能

你可以在线试用:在线演示

⚡️ 开始使用

只需将你的 TextField 包装在 AutoHideKeyboard 小部件中即可:

AutoHideKeyboard(
  child: TextField(), // 你的TextField小部件
)

就是这样!

示例代码

以下是一个完整的示例,展示了如何在实际应用中使用 auto_hide_keyboard 插件。

import 'package:flutter/material.dart';
import 'package:auto_hide_keyboard/auto_hide_keyboard.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AutoHideKeyboard',
      home: Home(),
    );
  }
}

class Home extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: 2,
      child: Scaffold(
        appBar: AppBar(
          title: const Text('AutoHideKeyboard'),
          centerTitle: true,
          bottom: const TabBar(tabs: [
            Tab(text: 'Single'),
            Tab(text: 'Multi'),
          ]),
        ),
        body: const TabBarView(children: [
          SinglePage(),
          MultiPage(),
        ]),
      ),
    );
  }
}

class SinglePage extends StatelessWidget {
  const SinglePage({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          AutoHideKeyboard(
            child: const SimpleTextField(hint: 'TextField 0'),
          ),
          const SimpleButton(),
        ],
      ),
    );
  }
}

class MultiPage extends StatelessWidget {
  const MultiPage({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          AutoHideKeyboard(
            child: const SimpleTextField(
              hint: 'TextField 1',
            ),
          ),
          Container(height: 24),
          AutoHideKeyboard(
            child: const SimpleTextField(
              hint: 'TextField 2',
            ),
          ),
          const SimpleButton(),
        ],
      ),
    );
  }
}

// 假设SimpleTextField和SimpleButton是自定义的小部件
class SimpleTextField extends StatelessWidget {
  final String hint;

  const SimpleTextField({Key? key, required this.hint}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return TextField(
      decoration: InputDecoration(hintText: hint),
    );
  }
}

class SimpleButton extends StatelessWidget {
  const SimpleButton({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: () {},
      child: const Text('Submit'),
    );
  }
}

更多关于Flutter自动隐藏键盘插件auto_hide_keyboard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自动隐藏键盘插件auto_hide_keyboard的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用auto_hide_keyboard插件的示例代码。这个插件可以帮助你在特定条件下自动隐藏键盘。

首先,你需要在你的pubspec.yaml文件中添加这个插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  auto_hide_keyboard: ^2.0.0  # 请确保版本号是最新的

然后运行flutter pub get来获取依赖。

接下来,你可以在你的Flutter项目中使用这个插件。以下是一个简单的示例,展示了如何在文本字段失去焦点时自动隐藏键盘:

import 'package:flutter/material.dart';
import 'package:auto_hide_keyboard/auto_hide_keyboard.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Auto Hide Keyboard Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: AutoHideKeyboard(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                TextField(
                  decoration: InputDecoration(
                    labelText: 'Enter text',
                  ),
                ),
                SizedBox(height: 20),
                ElevatedButton(
                  onPressed: () {
                    // 模拟点击按钮后隐藏键盘
                    FocusScope.of(context).unfocus();
                  },
                  child: Text('Hide Keyboard'),
                ),
              ],
            ),
            // 配置自动隐藏键盘的行为
            autoHideDelay: Duration(seconds: 3), // 3秒后自动隐藏键盘
            autoHideOnScroll: true, // 滚动时自动隐藏键盘
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们使用了AutoHideKeyboard组件来包裹我们的文本字段和按钮。AutoHideKeyboard组件有几个可选参数,例如autoHideDelayautoHideOnScroll,你可以根据需要进行配置。

  • autoHideDelay:指定在多少秒后自动隐藏键盘。
  • autoHideOnScroll:当页面滚动时是否自动隐藏键盘。

当你运行这个示例时,如果你在一个文本字段中输入文本,并且在3秒内没有进行任何操作,键盘将会自动隐藏。如果你滚动页面,键盘也会自动隐藏(如果autoHideOnScroll设置为true)。

这个插件非常方便,尤其是在需要管理键盘显示和隐藏逻辑时,可以极大地减少你的代码量。

回到顶部