Flutter保持视图可见插件keep_visible的使用

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

Flutter保持视图可见插件keep_visible的使用

在键盘弹出时保持小部件始终可见。
在以下示例中,页脚始终可见:

使用方法

导入插件

首先,需要导入 keep_visible 插件:

import 'package:keep_visible/keep_visible.dart';

包裹目标小部件

将需要保持可见的小部件包裹在 KeepVisible 小部件中:

KeepVisible(
  child: Text('Login Button'),
),

完整示例

以下是一个完整的示例代码,展示了如何使用 keep_visible 插件来确保页面底部的页脚始终可见,即使键盘弹出时也是如此。

示例代码

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

void main() => runApp(const MyApp());

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(
        slivers: [
          // 页面头部
          SliverToBoxAdapter(
            child: Container(
              height: 400,
              color: Colors.yellow,
              alignment: Alignment.center,
              child: const Text('HEADER'),
            ),
          ),
          // 页面主体部分
          SliverFillRemaining(
            hasScrollBody: false,
            child: Column(
              children: [
                // 输入框区域
                Expanded(
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      TextFormField(
                        decoration: const InputDecoration(
                          labelText: 'email',
                        ),
                      ),
                      TextFormField(
                        decoration: const InputDecoration(
                          labelText: 'password',
                        ),
                      ),
                    ],
                  ),
                ),
                // 始终可见的页脚
                KeepVisible(
                  child: Container(
                    height: 100,
                    margin: const EdgeInsets.only(top: 24),
                    color: Colors.blue,
                    alignment: Alignment.center,
                    child: const Text('FOOTER'),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter保持视图可见插件keep_visible的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter保持视图可见插件keep_visible的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,如果你希望在键盘弹出时保持某些视图(如输入框或按钮)可见,可以使用 keep_visible 插件。这个插件可以帮助你确保在键盘弹出时,特定的 widget 不会被键盘遮挡。

安装 keep_visible 插件

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

dependencies:
  flutter:
    sdk: flutter
  keep_visible: ^1.0.0

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

使用 keep_visible 插件

以下是一个简单的示例,展示了如何在键盘弹出时保持一个 TextFieldElevatedButton 可见:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Keep Visible Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              TextField(
                decoration: InputDecoration(
                  labelText: 'Enter something',
                ),
              ),
              SizedBox(height: 20),
              KeepVisible(
                child: ElevatedButton(
                  onPressed: () {
                    // 按钮点击事件
                  },
                  child: Text('Submit'),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

解释

  1. KeepVisible 组件: 将 ElevatedButton 包裹在 KeepVisible 组件中,确保在键盘弹出时,按钮不会被遮挡。

  2. TextField: TextField 是用户输入的部分,当键盘弹出时,Flutter 会自动调整布局以确保 TextField 可见。

  3. SizedBox: 用于在 TextFieldElevatedButton 之间添加一些间距。

注意事项

  • keep_visible 插件主要用于确保特定的 widget 在键盘弹出时保持可见。如果你希望整个布局都自动调整以避免键盘遮挡,可以使用 ScaffoldresizeToAvoidBottomInset 属性。
Scaffold(
  resizeToAvoidBottomInset: true, // 默认为 true
  // 其他代码
)
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!