【发布时间】:2021-07-18 05:32:22
【问题描述】:
我是新来的颤振。我试图创建一个通用类并从其他类访问它的变量。我的应用中有这个类:
class Target {
double dlatitude;
double dlongitude;
Target({this.dlatitude, this.dlongitude});
}
我在其他有状态的小部件中使用这个类来设置它的变量的值:
class _EditLocationState extends State<EditLocation> {
final TextEditingController _search = TextEditingController();
Target target = Target();
@override
void dispose() {
_search.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
Positioned(
left: 20,
top: 50,
right: 20,
child: TextField(
controller: _search,
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[400],
hintText: "${widget.location}",
),
),
),
),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
var array = _search.text.split(",");
Target(
dlongitude: double.parse(array[0]),
dlatitude: double.parse(array[1]));
}
print(target.dlatitude); // null value is printed here.
},
child: const Icon(Icons.done),
backgroundColor: Colors.green,
),
);
}
}
每当我尝试访问其他小部件中的目标变量值时,都会收到此错误:NoSuchMethodError: The getter 'dlongitude' was called on null.
class _SearchRideState extends State<SearchRide> {
final TextEditingController _search = TextEditingController();
Target target=Target();
@override
void dispose() {
_search.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
Positioned(
left: 20,
top: 50,
right: 20,
child: TextField(
controller: _search,
decoration: InputDecoration(
filled: true,
fillColor: Colors.grey[400],
hintText: "${target.dlatitude},${target.dlongitude}"
),
),
),
],
),
);
}
}
我该怎么办?
【问题讨论】: