【问题标题】:Future Builder not working with Geolocator with flutterFuture Builder 无法使用颤振的 Geolocator
【发布时间】:2021-06-06 00:38:39
【问题描述】:

我对 Flutter 有点陌生,我是第一次使用 Geolocator 插件。我正在尝试拥有一个 FutureBuilder,它可以在构建时找到用户所在的城市,但它永远不会离开加载屏幕

这是我当前的代码:

 class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {

String currentTown;


  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _getTown(),
        builder: (context, snap) {
        if(snap.connectionState == ConnectionState.waiting) {
          return Loading();
        } else {
          return Center(
            child: Text(
              currentTown ?? null,
              style: TextStyle(
                color: Colors.white
              ),
            ),
          );
        }
        }
    );
  }

  Future _getTown() async {
    print('get Town');
    Position pos = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    final coordinates = Coordinates(pos.latitude, pos.longitude);
    var address = await Geocoder.local.findAddressesFromCoordinates(coordinates);
    print(address.first.locality);
    setState(() {
      currentTown = address.first.locality;
    });
  }

}

pubspec.yaml:

dependencies:
  geolocator: ^7.0.1
  geocoder: ^0.2.1

我不确定我做错了什么。我尝试让未来返回字符串值,但它仍然不会从加载屏幕更改。即使我使用 ConnectionState 它仍然无法正常工作

【问题讨论】:

    标签: flutter dart geolocation future flutter-futurebuilder


    【解决方案1】:

    你需要退货试试这个

    Future _getTown() async {
           return address.first.locality;
          }
    

    同时修改你的构建器

     builder: (context, snapshot) {
                if (snapshot.connectionState == ConnectionState.done) {
                  if (snapshot.hasData) {
                 print(snapshot.data);
                  }
         else{return loadingWidget();}
    

    【讨论】:

    • 非常感谢,我不敢相信它这么简单,我有点像个白痴,哈哈,但谢谢你为我解决了这个问题:)
    • 不用担心我们都有这样的时刻哈哈:D
    猜你喜欢
    • 2021-02-23
    • 2022-11-12
    • 1970-01-01
    • 2020-07-04
    • 2021-01-13
    • 2021-07-30
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多