正如您从 video I posted 中看到的,我对下面的文本字段存在约束问题。一旦我按下,键盘就会打开,但它重叠并破坏了整个视图。我该如何解决和管理问题?
问题可能是 qrima 的尺寸设置不当。
他们建议我管理 Scaffold 中的所有内容,然后设置 resizeToAvoidBottomInset: false 但我没有注意到任何改进
我已经问过这个问题,他们告诉我把所有东西都放在一个脚手架里。我试过了,但这真的破坏了视野,我什么也没看到
{{1}}
答案 0 :(得分:0)
我不得不说你使用堆栈和定位太多了。没有必要计算一切。而是使用像 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,
),
),
),
),
],
);
}),
),
],
),
),
),
);
}
}