如何获取gps坐标,将其显示在屏幕上并用flutter发送到mysql数据库?

问题描述 投票:0回答:1

对我来说太简单了,因为我对使用 flutter 完全陌生。

到目前为止,我已经用我的代码完成了以下任务:

  1. 用户登录
  2. 将用户发送到 Home.dart 并传递用户名,以便我可以显示数据库中的数据。
  3. Mysql / Php 连接向数据库发送和接收数据。
  4. 检查并请求 GPS 设备访问权限。
  5. 获取 GPS 坐标,但仅将其打印到调试终端。
  6. *添加^ 推送至文本 GPS 坐标。 这就是我需要帮助/协助/指导的地方。

自从我获得 GPS 数据和 null 修复并工作以来,剩下的唯一一件事就是传入并识别用户名。

完整代码如下:

import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

class HomePage extends StatefulWidget {
String username;
HomePage({super.key, required this.username});
    


 
 
  @override
 _HomePageState createState() => _HomePageState();
   

}

class _HomePageState extends State<HomePage> {
  
  
  Position? _currentPosition; 

  void _getUserPosition() async {
    await Geolocator.checkPermission();
    await Geolocator.requestPermission();
    
    Position userLocation = await Geolocator
      .getCurrentPosition(desiredAccuracy: LocationAccuracy.best, forceAndroidLocationManager: true);

    setState(() {
      _currentPosition = userLocation;
    });
  }

  @override
  void initState() {
    super.initState();
    _getUserPosition();
  }
  
  
  

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Location"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (_currentPosition != null)
            Text(
"Your Position is:  LAT: ${_currentPosition?.latitude}, LNG: ${_currentPosition?.longitude}"
          ),
            
            ElevatedButton(
              child: const Text("Get location"),
              onPressed: () {
                _getUserPosition();
              },
            ),
          ],
        ),
      ),
    );
  }
}

在添加 createState 代码之前,用户名已被传入并被识别。现在,当我尝试将 $username 添加到文本中以表示 $username 你的位置是............它一直告诉我未定义。

所以我需要的帮助是如何识别字符串用户名。它在添加 createState 之前有效,但不是无效,而且我对 flutter 的了解不够,不知道为什么。

flutter authentication geolocation gps flutter-dependencies
1个回答
0
投票

所以我做了更多阅读,找到了我的解决方案或适应性强的解决方案。

改变了

HomePage({super.key, required this.username});

对此:

 HomePage({required this.username});

改变了

@override _HomePageState createState() => _HomePageState();

对此:

@override State<StatefulWidget> createState(){ return _HomePageState(username); }

最后补充:

String username; _HomePageState(this.username);

在此下:

class _HomePageState extends State<HomePage> {

现在进入这个 flutter 项目的下一部分,即将 GPS 发送到数据库,然后将提升的按钮更改为“开始”,添加另一个名为“停止”的按钮,并将其全部放入一个可以启动然后停止的计时器中。

就像我刚开始熟悉Android一样,现在我必须学习一种全新的开发工具。对我来说最困难的部分是设计,我绝不是一个全栈开发人员。我编写代码来使设计工作,但我不设计这对我来说是一个挑战,因为你必须了解两者。希望这可以帮助有类似问题的人。

© www.soinside.com 2019 - 2024. All rights reserved.