Flutter键盘适配插件input_keyboard_adaptor的使用

Flutter键盘适配插件input_keyboard_adaptor的使用

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  input_keyboard_adaptor: ^latest

然后运行以下命令以安装依赖:

flutter pub get

导入

在 Dart 文件中导入插件:

import 'package:input_keyboard_adaptor/input_keyboard_adaptor.dart';

使用方法

使用 InputKeyboardAdaptor 小部件包裹你的输入框。通过设置 keyboardDistanceFromTextFieldkeyboardDistanceFromContent 属性,可以调整键盘与输入框或内容之间的距离。

示例代码

class MyApp extends StatelessWidget {
  // 这是应用程序的根小部件。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      // 如果 resizeToAvoidBottomInset 设置为 false,该组件将无效
      // resizeToAvoidBottomInset: true,
      appBar: AppBar(
        title: const Text("InputKeyboardAdaptorTest"),
      ),
      body: InputKeyboardAdaptor(
        // keyboardDistanceFromTextField: 0, // 键盘顶部与当前焦点输入框底部的距离
        keyboardDistanceFromContent: 10, // 键盘顶部与 InputKeyboardAdaptor 组件底部的距离(二选一设置)
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 20),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              const SizedBox(height: 240,), // 空白区域
              const Text("This is a test", style: TextStyle(fontSize: 20, color: Colors.black, fontWeight: FontWeight.bold),),
              const SizedBox(height: 40,), // 空白区域
              TextField(
                onTapOutside: (event) => FocusScope.of(context).unfocus(), // 点击外部时隐藏键盘
                decoration: InputDecoration(
                  hintText: "Enter your name",
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.circular(8),
                  ),
                ),
              ),
              const SizedBox(height: 40,), // 空白区域
              TextField(
                onTapOutside: (event) => FocusScope.of(context).unfocus(), // 点击外部时隐藏键盘
                decoration: InputDecoration(
                  hintText: "Enter your mobile",
                  border: OutlineInputBorder(
                    borderRadius: BorderRadius.circular(8),
                  ),
                ),
              ),
              const SizedBox(height: 40,), // 空白区域
              Container(
                height: 56,
                width: double.infinity,
                margin: const EdgeInsets.symmetric(horizontal: 80),
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(56 / 2),
                  color: const Color(0xff00c487),
                ),
                child: TextButton(
                  onPressed: () => debugPrint('Button pressed'), // 按钮点击事件
                  child: const Text("Submit", style: TextStyle(fontSize: 16, color: Colors.white, fontWeight: FontWeight.w500)),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
1 回复

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


input_keyboard_adaptor 是一个用于 Flutter 的插件,旨在帮助开发者更好地处理键盘弹出时的布局适配问题。它可以帮助你在键盘弹出时自动调整布局,避免键盘遮挡输入框或其他重要内容。

安装插件

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

dependencies:
  flutter:
    sdk: flutter
  input_keyboard_adaptor: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装插件。

使用插件

input_keyboard_adaptor 插件提供了一个 InputKeyboardAdaptor 组件,你可以将它包裹在你的布局组件外部,以便在键盘弹出时自动调整布局。

基本用法

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Input Keyboard Adaptor Example'),
        ),
        body: InputKeyboardAdaptor(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              children: [
                TextField(
                  decoration: InputDecoration(
                    labelText: 'Enter your name',
                  ),
                ),
                SizedBox(height: 20),
                TextField(
                  decoration: InputDecoration(
                    labelText: 'Enter your email',
                  ),
                ),
                SizedBox(height: 20),
                ElevatedButton(
                  onPressed: () {
                    // Handle button press
                  },
                  child: Text('Submit'),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

自定义配置

InputKeyboardAdaptor 提供了一些可选的参数,允许你自定义键盘弹出时的行为:

  • resizeToAvoidBottomInset: 是否在键盘弹出时调整布局以避免底部内容被遮挡。默认为 true
  • padding: 在键盘弹出时添加的额外内边距。默认为 EdgeInsets.zero
InputKeyboardAdaptor(
  resizeToAvoidBottomInset: true,
  padding: EdgeInsets.only(bottom: 20),
  child: YourWidget(),
)
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!