对我来说太简单了,因为我对使用 flutter 完全陌生。
到目前为止,我已经用我的代码完成了以下任务:
自从我获得 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 的了解不够,不知道为什么。
所以我做了更多阅读,找到了我的解决方案或适应性强的解决方案。
改变了
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一样,现在我必须学习一种全新的开发工具。对我来说最困难的部分是设计,我绝不是一个全栈开发人员。我编写代码来使设计工作,但我不设计这对我来说是一个挑战,因为你必须了解两者。希望这可以帮助有类似问题的人。