geolocator 6.0.0+1 distanceBetween() 无法正常工作
geolocator 6.0.0+1 distanceBetween() not working in flutter
我希望每个人都安全我正在使用 flutter,我想计算两个位置之间的距离所以我安装了 geolocator 6.0.0+1 来自 pub.dev here,这样我可以找到用户的位置,但我不能使用名为 ** distanceBetween()** 的内置方法,该方法用于计算两个纬度和经度之间的距离,它向我显示一个错误提示**方法 'distanceBetween' 没有为类型“_RegisterState”定义。
** 我使用了文档中显示的方法 here
这是我的代码:
import 'dart:html;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:staffattendence05/Usermodel.dart';
import 'package:staffattendence05/add_user.dart';
import 'package:staffattendence05/authenticate.dart';
import 'package:staffattendence05/fauth.dart';
import 'package:staffattendence05/home.dart';
import 'package:staffattendence05/styling.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:staffattendence05/loading.dart';
import 'package:geolocator/geolocator.dart';
import 'Login_ins.dart';
class Register extends StatefulWidget {
@override
_RegisterState createState() => _RegisterState();
}
class _RegisterState extends State<Register> {
@override
final _formkey = GlobalKey<FormState>();
String email = '';
String error = '';
String password = '';
bool loading = false;
final Authservice _auth = Authservice();
Widget build(BuildContext context) {
return loading
? Loading()
: Scaffold(
backgroundColor: Colors.teal,
appBar: AppBar(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
),
title: Text(
"Register your institute",
style:
TextStyle(fontWeight: FontWeight.bold, color: Colors.white),
),
actions: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: FlatButton.icon(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Loginins()),
);
},
icon: Icon(Icons.perm_identity),
label: Text("institute Login"),
color: Colors.teal,
),
)
],
backgroundColor: Colors.green[400],
),
body: Padding(
padding: const EdgeInsets.all(36.0),
child: Form(
key: _formkey,
child: Column(
children: <Widget>[
SizedBox(
height: 120.0,
),
TextFormField(
decoration: styling.copyWith(hintText: "Admin email"),
validator: (val) {
return val.isEmpty
? "please enter an valid email id"
: null;
},
onChanged: (val) {
email = val;
},
),
SizedBox(
height: 20.0,
),
TextFormField(
obscureText: true,
decoration: styling.copyWith(hintText: "Admin password"),
validator: (val) => val.length < 6
? "a password should contain atleast 6 characters"
: null,
onChanged: (val) => password = val,
),
SizedBox(
height: 25.0,
),
RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(7)),
color: Colors.green[400],
child: Text(
"Register",
style: TextStyle(fontWeight: FontWeight.bold),
),
onPressed: () async {
if (_formkey.currentState.validate()) {
setState(() {
loading = true;
});
Position Insposition = await getCurrentPosition(
desiredAccuracy: LocationAccuracy.best);
dynamic result =
await _auth.Signupwithemailandpassword(
email, password, Insposition);
final String adminname = email;
double distanceInMeters = distanceBetween(
52.2165157, 6.9437819, 52.3546274, 4.8285838);
print("1111111111111$adminname");
print(Insposition);
if (result == null) {
setState(() {
loading = false;
error = 'Please enter a valid email address!';
});
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Home(
adminname: adminname,
)),
);
}
}
},
),
SizedBox(height: 20.0),
Text(
error,
style: TextStyle(
color: Colors.red[400],
fontWeight: FontWeight.bold,
fontSize: 14),
)
],
),
),
),
);
}
}
`如果有人指出我犯的错误,将不胜感激。
提前谢谢你。
这样做,
double distanceInMeters = await Geolocator().distanceBetween(
52.2165157, 6.9437819, 52.3546274, 4.8285838);
查看 GitHub 包的页面和来源,pub.dev 上的文档似乎已过时。正确的用法似乎是:
double distanceInMeters = GeolocatorPlatform.instance.distanceBetween(
52.2165157,
6.9437819,
52.3546274,
4.8285838,
);
[已解决]
距离
GeolocatorPlatform.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude);
方位距离
GeolocatorPlatform.bearingBetween(startLatitude, startLongitude, endLatitude, endLongitude);
在撰写此答案时官方文档不正确。我尝试了上面的其他两个答案,但如果您尝试使用这些对我有用的代码,但没有成功,希望这也能解决您的问题。 [版本:地理定位器 6.0.0+1]
git https://github.com/Baseflow/flutter-geolocator/issues/496#issuecomment-683861804
None 以上在我的 geolocator 包中 - 我已经完成了 flutter pub upgrade 并且在我的 pubspec.yaml 上,参考如下:geolocator:
解决我的问题的代码是:
double distance = await geolocator.distanceBetween(double.tryParse(lat1),
double.tryParse(long1), double.tryParse(lat2), double.tryParse(long2));
我希望每个人都安全我正在使用 flutter,我想计算两个位置之间的距离所以我安装了 geolocator 6.0.0+1 来自 pub.dev here,这样我可以找到用户的位置,但我不能使用名为 ** distanceBetween()** 的内置方法,该方法用于计算两个纬度和经度之间的距离,它向我显示一个错误提示**方法 'distanceBetween' 没有为类型“_RegisterState”定义。 ** 我使用了文档中显示的方法 here
这是我的代码:
import 'dart:html;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:staffattendence05/Usermodel.dart';
import 'package:staffattendence05/add_user.dart';
import 'package:staffattendence05/authenticate.dart';
import 'package:staffattendence05/fauth.dart';
import 'package:staffattendence05/home.dart';
import 'package:staffattendence05/styling.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:staffattendence05/loading.dart';
import 'package:geolocator/geolocator.dart';
import 'Login_ins.dart';
class Register extends StatefulWidget {
@override
_RegisterState createState() => _RegisterState();
}
class _RegisterState extends State<Register> {
@override
final _formkey = GlobalKey<FormState>();
String email = '';
String error = '';
String password = '';
bool loading = false;
final Authservice _auth = Authservice();
Widget build(BuildContext context) {
return loading
? Loading()
: Scaffold(
backgroundColor: Colors.teal,
appBar: AppBar(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
),
title: Text(
"Register your institute",
style:
TextStyle(fontWeight: FontWeight.bold, color: Colors.white),
),
actions: <Widget>[
Padding(
padding: const EdgeInsets.all(8.0),
child: FlatButton.icon(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => Loginins()),
);
},
icon: Icon(Icons.perm_identity),
label: Text("institute Login"),
color: Colors.teal,
),
)
],
backgroundColor: Colors.green[400],
),
body: Padding(
padding: const EdgeInsets.all(36.0),
child: Form(
key: _formkey,
child: Column(
children: <Widget>[
SizedBox(
height: 120.0,
),
TextFormField(
decoration: styling.copyWith(hintText: "Admin email"),
validator: (val) {
return val.isEmpty
? "please enter an valid email id"
: null;
},
onChanged: (val) {
email = val;
},
),
SizedBox(
height: 20.0,
),
TextFormField(
obscureText: true,
decoration: styling.copyWith(hintText: "Admin password"),
validator: (val) => val.length < 6
? "a password should contain atleast 6 characters"
: null,
onChanged: (val) => password = val,
),
SizedBox(
height: 25.0,
),
RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(7)),
color: Colors.green[400],
child: Text(
"Register",
style: TextStyle(fontWeight: FontWeight.bold),
),
onPressed: () async {
if (_formkey.currentState.validate()) {
setState(() {
loading = true;
});
Position Insposition = await getCurrentPosition(
desiredAccuracy: LocationAccuracy.best);
dynamic result =
await _auth.Signupwithemailandpassword(
email, password, Insposition);
final String adminname = email;
double distanceInMeters = distanceBetween(
52.2165157, 6.9437819, 52.3546274, 4.8285838);
print("1111111111111$adminname");
print(Insposition);
if (result == null) {
setState(() {
loading = false;
error = 'Please enter a valid email address!';
});
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Home(
adminname: adminname,
)),
);
}
}
},
),
SizedBox(height: 20.0),
Text(
error,
style: TextStyle(
color: Colors.red[400],
fontWeight: FontWeight.bold,
fontSize: 14),
)
],
),
),
),
);
}
}
`如果有人指出我犯的错误,将不胜感激。 提前谢谢你。
这样做,
double distanceInMeters = await Geolocator().distanceBetween(
52.2165157, 6.9437819, 52.3546274, 4.8285838);
查看 GitHub 包的页面和来源,pub.dev 上的文档似乎已过时。正确的用法似乎是:
double distanceInMeters = GeolocatorPlatform.instance.distanceBetween(
52.2165157,
6.9437819,
52.3546274,
4.8285838,
);
[已解决]
距离
GeolocatorPlatform.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude);
方位距离
GeolocatorPlatform.bearingBetween(startLatitude, startLongitude, endLatitude, endLongitude);
在撰写此答案时官方文档不正确。我尝试了上面的其他两个答案,但如果您尝试使用这些对我有用的代码,但没有成功,希望这也能解决您的问题。 [版本:地理定位器 6.0.0+1]
git https://github.com/Baseflow/flutter-geolocator/issues/496#issuecomment-683861804
None 以上在我的 geolocator 包中 - 我已经完成了 flutter pub upgrade 并且在我的 pubspec.yaml 上,参考如下:geolocator: 解决我的问题的代码是:
double distance = await geolocator.distanceBetween(double.tryParse(lat1),
double.tryParse(long1), double.tryParse(lat2), double.tryParse(long2));