如何解决Flutter 2.0:根据闭包上下文的要求,返回类型 <List<LatLng>> 不是“void”
我收到错误
The return Type <List<LatLng>> isn’t a 'void',as required by the closure's context
关于此按钮小部件中的 return polygonList;
行:
Widget _markerButton(BuildContext context) {
return IconButton(
icon: Icon(Icons.favorite,color: _list ? Colors.green : Colors.red),onpressed: () {
setState(() {
_list = !_list;
numberOfMarkers(latlng)[0];
realtyTap = true;
});
return polygonList;
},);
}
以前效果很好。当我切换到 Flutter 2.0 和 sdk: "> = 2.12.0 <3.0.0”
时出现此错误。
我查看了有类似困难的人的问题答案,但对我没有帮助。
import 'package:Flutter/material.dart';
import 'package:Flutter/rendering.dart';
import 'package:Flutter_map/Flutter_map.dart';
import 'package:latlong/latlong.dart';
class HomePage extends StatefulWidget {
final Function state;
HomePage(this.state);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
late MapController _mapController;
late LatLng latlng;
List<Marker> markers = [];
List<LatLng> polygonList = [];
bool singleTap = false;
bool _list = false;
double maxZoom = 6.0;
double minZoom = 4.0;
@override
void initState() {
super.initState();
}
Widget _markerButton(BuildContext context) {
return IconButton(
icon: Icon(Icons.favorite,onpressed: () {
setState(() {
_list = !_list;
});
return polygonList;
},);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FlutterMap(
mapController: _mapController,options: MapOptions(
center: LatLng(40.000000,70.000000),zoom: 4,onTap: (latlng) {
if (singleTap) {
setState(() {
if (markers.length == 0) {
markers.add(Marker(
point: latlng,builder: (context) => _markerButton(context)));
} else {
markers.add(
Marker(
point: latlng,builder: (ctx) => const Icon(
Icons.fiber_manual_record_rounded,color: Colors.red,size: 15.0,),);
}
polygonList.add(latlng);
});
}
}),layers: [
TileLayerOptions(
urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",subdomains: ['a','b','c']),polygonLayerOptions(
polygons: [
polygon(
points: polygonList,borderstrokeWidth: 3.0,],);
}
}
这里应该发生什么:如果用户第二次点击地图上他/她开始构建多边形的点,按钮会改变颜色,建筑停止,角落里的点列表返回构建的多边形。
如果您能给我一些有关如何解决此问题的建议,我将不胜感激。
解决方法
Dart 2.12 添加了更严格的类型检查以捕获回调返回未使用值的情况。
IconButton.onPressed
是一个 VoidCallback?
;也就是说,如果它不是 null
,则它是一个不返回任何内容的函数。
您正在提供一个匿名函数,其中包含 return polygonList;
。该返回值永远无法使用,因此 return
语句是无用的。只需将其删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。