这是我第一个奉承的应用程序。我想做的是这样的ab容器布局:
class _HomePageState extends State<HomePage> {
final Geolocator geolocator = Geolocator()..forceAndroidLocationManager;
Position _currentPosition;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("LocInfo"),
),
body:
ListView(
children: [
//_getCurrentLocation(),
locSection,
addressSection,
timeSection,
],
),
);
}
在布局中,我有这个小部件:
Widget locSection = Container(
padding: const EdgeInsets.all(32),
child: Row(
children: [
Expanded(
/*1*/
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/*2*/
Container(
padding: const EdgeInsets.only(bottom: 8),
child: Text(
'Location (LAT/LNG)',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
),
if (_currentPosition != null)
Text(
"LAT: ${_currentPosition.latitude}, LNG: ${_currentPosition.longitude}",
style: TextStyle(
color: Colors.grey[500],
),
),
],
),
),
/*3*/
Icon(
Icons.near_me,
),
],
),
);
我还有一个获取坐标的功能:
_getCurrentLocation() {
final Geolocator geolocator = Geolocator()..forceAndroidLocationManager;
geolocator
.getCurrentPosition(desiredAccuracy: LocationAccuracy.best)
.then((Position position) {
setState(() {
_currentPosition = position;
});
_getAddressFromLatLng();
}).catchError((e) {
print(e);
});
}
问题是,我收到此错误:
lib / home_page.dart:52:21:错误:无法在字段中访问“此” 初始化程序读取“ _currentPosition”。 如果(_currentPosition!= null)
那我该如何访问_currentPosition
?
答案 0 :(得分:0)
所以,您的
Widget locSection = Container(
padding: const EdgeInsets.all(32),...
类似于初始化程序,此时_HomePageState的实例尚未形成。因此,您无法访问其变量_currentPosition。
您可以在_HomePageState的初始化期间(在构造函数中)或在初始化之后(例如在initState中)创建locSection,然后它将正常工作。