Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart ';流订阅<;位置数据>';无法分配给';流订阅<;地图<;字符串,双>&燃气轮机';_Dart_Flutter_Location - Fatal编程技术网

Dart ';流订阅<;位置数据>';无法分配给';流订阅<;地图<;字符串,双>&燃气轮机';

Dart ';流订阅<;位置数据>';无法分配给';流订阅<;地图<;字符串,双>&燃气轮机';,dart,flutter,location,Dart,Flutter,Location,当前正在学习颤振,在尝试检测我的设备的位置时出现此错误: 无法分配“StreamSubscription”类型的值 到“StreamSubscription>类型的变量” 我一直在关注一个在线教程,但不知怎么的,出现了这个错误 import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:location/location.dart'; import '

当前正在学习颤振,在尝试检测我的设备的位置时出现此错误:

无法分配“StreamSubscription”类型的值 到“StreamSubscription>类型的变量”

我一直在关注一个在线教程,但不知怎么的,出现了这个错误

import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:location/location.dart';
import 'dart:async';
import 'package:flutter/services.dart';

class MainPage extends StatefulWidget {

  @override
  State<StatefulWidget> createState() => AppState();
} 

class AppState extends State<MainPage> {

  Map<String,double> currentLocation = new Map();
  StreamSubscription<Map<String,double>> locationSubscription;

  var location = new Location();
  String error;

  void initState() {
    super.initState();

    currentLocation['latitude'] = 0.0;
    currentLocation['longitude'] = 0.0;

    initPlatformState();

    locationSubscription = 
    location.onLocationChanged().listen((Map<String,double> result) {
      setState(() {
        currentLocation = result; 
      });
    });
  }

  void initPlatformState() async{
    Map<String,double> myLocation;
    try {
      myLocation = await location.getLocation();
      error="";
    } on PlatformException catch(e) {
      if(e.code == 'PERMISSION_DENIED')
        error = "permission denied";
      else if(e.code == "PERMISSION_DENIED_NEVER_ASK")
        error = "permission denied";
      myLocation = null;
    }

    setState(() {
      currentLocation = myLocation; 
    });
  }

  @override
  Widget build (BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Text(""),
        automaticallyImplyLeading: false,
      ),
      body: Container(
        child: FlutterMap(
          options: MapOptions(
          ),
          layers: [
            TileLayerOptions(

            ),
          ]
        ),
      )
    ); 
  } 
}
导入“包装:颤振/材料.省道”;
导入“包:颤振图/颤振图.dart”;
导入“package:location/location.dart”;
导入“dart:async”;
导入“包:flifter/services.dart”;
类MainPage扩展了StatefulWidget{
@凌驾
State createState()=>AppState();
} 
类AppState扩展了状态{
Map currentLocation=新映射();
流订阅位置订阅;
var location=新位置();
字符串错误;
void initState(){
super.initState();
当前位置['纬度]]=0.0;
当前位置[‘经度’]=0.0;
initPlatformState();
位置订阅=
location.onLocationChanged().listen((映射结果){
设置状态(){
当前位置=结果;
});
});
}
void initPlatformState()异步{
地图定位;
试一试{
myLocation=等待位置。getLocation();
错误=”;
}平台上异常捕获(e){
如果(e.code=='权限被拒绝')
error=“权限被拒绝”;
否则如果(e.code==“权限被拒绝\u从不要求”)
error=“权限被拒绝”;
myLocation=null;
}
设置状态(){
currentLocation=myLocation;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:对,
标题:文本(“”),
自动嵌入:false,
),
主体:容器(
孩子:地图(
选项:地图选项(
),
图层:[
TileLayerOptions(
),
]
),
)
); 
} 
}

如果您能给我提些建议,我将不胜感激。下面是我观看的视频:

看起来本教程是使用较旧版本的
位置
插件完成的,因为v2.0.0版他们更改了api以返回结构化数据而不是地图


因此,您需要将所有的
地图类型更改为
LocationData
,或者将插件版本设置为
^1.4.0

,多亏了一位好心的人在另一个Fatter facebook群上的帮助,我尝试了很多方法,直到找到了这种方法。请确保在您的pubspec.yaml中将位置更新为最新版本

dependencies:
  location: ^2.3.5
然后将其更改为以下代码:

LocationData\u currentLocation;
StreamSubscription _locationSubscription;
var_locationService=新位置();
字符串错误;
void initState(){
super.initState();
initPlatformState();
_locationSubscription=\u locationService
.onLocationChanged()
.listen((LocationData currentLocation)异步{
设置状态(){
_currentLocation=当前位置;
});
});
}
void initPlatformState()异步{
试一试{
_currentLocation=Wait_locationService.getLocation();
}平台上异常捕获(e){
如果(e.code=='权限被拒绝'){
错误='权限被拒绝';
}否则如果(e.code==“权限被拒绝\u从不要求”){
错误='权限被拒绝';
}
_currentLocation=null;
}