dart 如何重用这些变量?

cgh8pdjw  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(116)

使用Flutter/Dart。
我有一个功能,以获得全球定位系统的位置,从一个浮动的行动按钮调用。

floatingActionButton: FloatingActionButton(
        onPressed: _getCurrentLocation,
        child: const Icon(Icons.add),
      ),

Position? _position;
  void _getCurrentLocation() async {
    Position position = await _determinePosition();
    setState(() {
      _position = position;
      var lat = position.latitude.toString();
      var long = position.longitude.toString();
      print("New Lat: $lat");
      print("New Long: $long");
    });
  }

这是工作正常,但我想重新使用变量lat和long以外的这个函数在一个不同的函数或小部件在同一个页面上,也可能在另一个页面上。
我的理解是setState不是我需要的,因为它用于在检测时更改屏幕设计。
我需要更新的变量是能够通过PHP服务器POST它们以从数据库获取数据。
这是我在函数外尝试的,但变量是空的。

async {
  try {
    var response = await http
        .post(Uri.parse("https://www.sample.com/sample.php"), body: {
      "latitude": lat,
      "longitude": long,
    });
    print(response.body);
  } catch (e) {
    print(e);
  }
}

谢谢

x4shl7ld

x4shl7ld1#

你可以创建一个支持流控制器的类,你可以通过它们设置和获取数据。
https://api.flutter.dev/flutter/dart-async/StreamController-class.html
非常容易实现,您也可以使用RxDart,或者使用阻塞或提供程序状态管理

相关问题