当键盘出现时,我遇到了重建小部件的问题。我尝试使用 sizer 包,但永远无法弄清楚如何让它工作,当我从这个屏幕返回时,前一个屏幕中的所有内容都将重建,请注意:如果我不单击键盘,则typeaheadwidget键盘不会单击t 显示状态保留在前一个屏幕中,但一旦键盘弹出,小部件就会重建,您可以检查一下吗?
class SearchScreen extends StatefulWidget {
@override
_SearchScreenState createState() => _SearchScreenState();
}
class _SearchScreenState extends State<SearchScreen> {
TextEditingController pickUpTextEditingController = TextEditingController();
TextEditingController dropOffTextEditingController = TextEditingController();
@override
void initState() {
super.initState();
}
@override
@mustCallSuper
Widget build(BuildContext context) {
String placeAddress =
Provider.of<AppData>(context).pickUpLocation.placeName ?? "";
pickUpTextEditingController.text = placeAddress;
return Scaffold(
resizeToAvoidBottomInset: false,
body: Stack(
children: [
Container(
height: 250.0,
decoration: BoxDecoration(
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colors.black,
blurRadius: 6.0,
spreadRadius: 0.5,
offset: Offset(0.7, 0.7),
)
], …Run Code Online (Sandbox Code Playgroud) CircularProgressIndicator我的主要目标是在获得位置地址之前显示 a placename,但我不断收到此错误 The getter 'placeName' was called on null.。我确实尝试检查该null值futureBuilder,但我相信我的实现是错误的。您能看一下吗?这是我的AppData班级
class AppData extends ChangeNotifier {
Address pickUpLocation;
void updatePickUpLocationAddress(Address pickUpAddress) {
pickUpLocation = pickUpAddress;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
这是Address班级
class Address {
String placeFormattedAddress;
dynamic placeName;
String placeId;
double latitude;
double longitude;
Address(
{this.placeFormattedAddress,
this.placeName,
this.placeId,
this.latitude,
this.longitude});
}
Run Code Online (Sandbox Code Playgroud)
现在,MainScreen我正在像这样使用它,但错误仍然存在。
@override
Widget build(BuildContext context) {
\\\
body: Stack(
\\\
Flexible(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
FutureBuilder ( …Run Code Online (Sandbox Code Playgroud)