文本字段打开键盘颤振脚手架

问题描述

正如您从 video I posted 中看到的,我对下面的文本字段存在约束问题。一旦我按下,键盘就会打开,但它重叠并破坏了整个视图。我该如何解决和管理问题?

问题可能是 qrima 的尺寸设置不当。

他们建议我管理 Scaffold 中的所有内容,然后设置 resizetoAvoidBottomInset: false 但我没有注意到任何改进

我已经问过这个问题,他们告诉我把所有东西都放在一个脚手架里。我试过了,但这真的破坏了视野,我什么也没看到

{{1}}

更新:

enter image description here

解决方法

我不得不说你使用堆栈和定位太多了。没有必要计算一切。而是使用像 Expanded 或 padding 这样的颤动小部件来在小部件之间和周围留出所需的空间。我无法轻松修复您的代码,但我至少尝试以类似的方式编写它。此代码将防止输入覆盖。请检查:

    import 'package:flutter/material.dart';

class TestPage extends StatefulWidget {
  @override
  _TestPageState createState() => _TestPageState();
}

class _TestPageState extends State<TestPage> {

  final Future<String> getUserData = Future<String>.delayed(
    const Duration(seconds: 2),() => 'Data Loaded',);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomInset: true,body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(28.0),child: Column(
            children: [
              Expanded(
                child: FutureBuilder<String>(
                    future: getUserData,builder: (context,AsyncSnapshot<String> snapUserData) {
                      if (snapUserData.hasError)
                        return Container(
                          child: Center(
                            child: Text("There was some error"),),);
                      if (snapUserData.connectionState != ConnectionState.done)
                        return Container(
                          child: Center(
                            child: CircularProgressIndicator(
                                valueColor: new AlwaysStoppedAnimation<Color>(
                                    Colors.yellow)),);
                      return Column(
                        children: [
                          // TITOLO
                          Text(
                            "qr",style: Theme.of(context)
                                .primaryTextTheme
                                .headline5
                                .copyWith(
                                  color: Colors.green,fontWeight: FontWeight.bold,Expanded(
                              child: Center(
                                  child: Text(
                            "something",))),Container(
                            color: Colors.blue,child: Padding(
                              padding: const EdgeInsets.all(1.0),child: TextField(
                                decoration: InputDecoration(
                                  filled: true,fillColor: Colors.white,focusedBorder: OutlineInputBorder(
                                    borderSide: BorderSide(color: Colors.white),enabledBorder: UnderlineInputBorder(
                                    borderSide: BorderSide(color: Colors.white),textAlign: TextAlign.center,style: TextStyle(
                                  fontSize: 18.0,//height: 2.0,color: Colors.black,],);
                    }),);
  }
}