【发布时间】:2022-11-07 16:41:08
【问题描述】:
错误:
-
命名参数“locationData”是必需的,但没有 对应的论据。尝试添加所需的参数。
-
未定义的名称'locationData'。尝试将名称更正为已定义的名称,或定义名称。
main.dart文件中的位置数据报错请帮我解决。我的代码:
下面是导致错误的
main.dart代码:import 'package:firebase_core/firebase_core.dart'; import 'package:firstapp/screens/Login_screen.dart'; import 'package:firstapp/screens/authunication/phone_auth_screen.dart'; import 'package:firstapp/screens/home_screen.dart'; import 'package:firstapp/screens/location_screen.dart'; import 'package:firstapp/screens/splash_screen.dart'; import 'package:flutter/material.dart'; import 'package:location/location.dart'; Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } // ignore: use_key_in_widget_constructors class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, theme: ThemeData( primaryColor: Colors.cyan.shade900, ), initialRoute: SplashScreen.id, routes: { SplashScreen.id: (context) => SplashScreen(), LoginScreen.id: (context) => LoginScreen(), PhoneAuthScreen.id: (context) => PhoneAuthScreen(), LocationScreen.id: (context) => LocationScreen(), HomeScreen.id: (context) => HomeScreen(locationData), }, );`下面是我想要位置数据的
HomeScreen小部件的代码:import 'package:flutter/material.dart'; import 'package:location/location.dart'; class HomeScreen extends StatelessWidget { static const String id = 'home-screen'; final LocationData locationData; HomeScreen({ required this.locationData, }); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(locationData.latitude.toString()), ), body: Center( child: Text('Home screen'), ), ); } }这是应用程序中
LocationScreen小部件的代码:import 'package:firebase_auth/firebase_auth.dart'; import 'package:firstapp/screens/login_screen.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:location/location.dart'; class LocationScreen extends StatefulWidget { static const String id = 'location-screen'; @override State<LocationScreen> createState() => _LocationScreenState(); } class _LocationScreenState extends State<LocationScreen> { Location location = new Location(); late bool _serviceEnabled; late PermissionStatus _permissionGranted; late LocationData _locationData; Future<LocationData?>getLocation() async { _serviceEnabled = await location.serviceEnabled(); if (!_serviceEnabled) { _serviceEnabled = await location.requestService(); if (!_serviceEnabled) { return null; } } _permissionGranted = await location.hasPermission(); if (_permissionGranted == PermissionStatus.denied) { _permissionGranted = await location.requestPermission(); if (_permissionGranted != PermissionStatus.granted) { return null; } } _locationData = await location.getLocation(); return _locationData; }
【问题讨论】:
-
如果您想将数据发送到新屏幕,您必须阅读此文档 =>
https://docs.flutter.dev/cookbook/navigation/navigate-with-arguments和https://docs.flutter.dev/cookbook/navigation/passing-data