'BuildContext' 不能分配给参数类型 'Widget Function(BuildContext, AsyncSnapshot<Position>) Flutter

时间:2021-06-15 17:17:13

标签: flutter

这里是菜鸟。我一直在使用地理定位器插件在 youtube 上关注一些编码教程,目标是跟踪和流式传输移动设备的当前位置。我无法让它工作,因为最近的版本更改不适用于它在视频上的编码方式。除了我对 Flutter 中流的非常浅薄的理解。

从我的 geolocator_service.dart 类/文件中,我想调用它并将其附加到我的 map.dart 屏幕文件中。但是在构建小部件时,我陷入了 StreamBuilder 的 builder 参数:

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:maglako/services/geolocator_service.dart';
import 'package:provider/provider.dart';


class Map extends StatefulWidget {


  @override
  _MapState createState() => _MapState();
}

class _MapState extends State<Map> {

  final GeolocatorService geolocatorService = GeolocatorService();

  @override


  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder <Position> (
        stream: geolocatorService.getCurrentLocation(),
        builder: (context, snapshot)  //  <---- this is where the error is located
      ) ,

      ),
    );
  }
}

我的 geolocator_service.dart 文件(geolocator 7.1.0 插件)

import 'dart:async';
import 'package:geolocator/geolocator.dart';


class GeolocatorService {
  final Geolocator geo = Geolocator();


  Stream<Position> getCurrentLocation()  {

    return Geolocator.getPositionStream(desiredAccuracy: LocationAccuracy.high,distanceFilter: 10);
  }

如果您能向我指出有关该主题的好教程,我们也将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

改成这个,构建器需要一个小部件,在这个小部件中你可以绘制你需要显示给用户的东西,比如 lat 和 lang 作为文本或自定义小部件,快照会显示你需要的数据

Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder <Position> (
        stream: geolocatorService.getCurrentLocation(),
        builder: (context, snapshot){
            // Updated
            return Text('Data updated');
          }
        ) ,
      ),
    );
  }