اذهب إلى المحتوى

السؤال

نشر

أريد عند الضغط على الزر المشار إليه في الصورة:

- طلب فتح ال GPS وطلب السماح للتطبيق بالوصول إليه ( إن لم يكن كذلك ).

- الانتقال إلى المكان الذي يتواجد فيه المستخدم.

ملاحظة / جربت العديد من الحلول، لكن للأسف، فأرجو أن يكون الحل المطروح مجرب ومضمون.

Screenshot (45)_LI.jpg

Recommended Posts

  • 0
نشر
اقتباس

- طلب فتح ال GPS وطلب السماح للتطبيق بالوصول إليه ( إن لم يكن كذلك ).

ستقوم بتثبيت حزمة geolocator ثم تعمل check على gps و تظهر رسالة إذا لم يكن مفعل بهذا الشكل 

var isGpsEnabled = await Geolocator().isLocationServiceEnabled();
Future _checkGps() async {
    if (!(await Geolocator().isLocationServiceEnabled())) {
      if (Theme.of(context).platform == TargetPlatform.android) {
        showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: Text("لا يمكن جلب الموقع الحالي"),
              content:
                  const Text('الرجاء تفعيل GPS'),
              actions: <Widget>[
                FlatButton(
                  child: Text('Ok'),
                  onPressed: () {
                    final AndroidIntent intent = AndroidIntent(
                        action: 'android.settings.LOCATION_SOURCE_SETTINGS');

                    intent.launch();
                    Navigator.of(context, rootNavigator: true).pop();
                  },
                ),
              ],
            );
          },
        );
      }
    }
  }
اقتباس

- الانتقال إلى المكان الذي يتواجد فيه المستخدم.

ستقوم بتثبيت الحزمتين 

google_maps_flutter
location

يمكنك البحث عنهما من خلال موقع pub.dev من هنا

في المسار التالي 

android/app/src/main/directory.

ستقوم بفتح ملف AndroidManifest.xml ستقوم بوضع التالي 

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:location/location.dart';


void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  @override 
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  LatLng _initialcameraposition = LatLng(20.5937, 78.9629);
  GoogleMapController _controller;
  Location _location = Location();

  void _onMapCreated(GoogleMapController _cntlr)
  {
    _controller = _cntlr;
    _location.onLocationChanged.listen((l) { 
      _controller.animateCamera(
        CameraUpdate.newCameraPosition(
          CameraPosition(target: LatLng(l.latitude, l.longitude),zoom: 15),
          ),
      );
    });
  }


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        child: Stack(
          children: [
            GoogleMap(
              initialCameraPosition: CameraPosition(target: _initialcameraposition),
              mapType: MapType.normal,
              onMapCreated: _onMapCreated,
              myLocationEnabled: true,
            ),
          ],
        ),
      ),
    );
  }

  
}

في الكود إعلاه هنا يتم وضع Lat , lng إفتراضي, ثم يأتي دور دالة 

_onMapCreated

كلما تغير موقع الجهاز, سيتم نقل الكاميرا إلى الموقع الجديد.

أخبرنا إلى أين وصلت في الكود الخاص بك و ما هي المشاكل وسنساعدك بإذن الله.

  • 0
نشر (معدل)
بتاريخ منذ ساعة مضت قال Mohammed Abu Yousef:

بسم الله، نبدأ بعرض الأخطاء بالتدريج:

- في أول طلبتها مني، وضع الدالة، تمام، عندما وضعتها تظهر بالصورة التالية:

( لم يتم التعرف على بعض الخصائص )

Screenshot (48).png

وبالنسبة للخطوة الثانية ( على فرض أني قد قمت بتشغيل ال GPS بشكل يدوي )

فإن الخريطة تظهر، ويظهر أيضًا الزر للضغط، وعندما أقوم بالضغط لا يحدث شيء

تم التعديل في بواسطة Mohammed Abu Yousef
  • 0
نشر
بتاريخ 1 ساعة قال Mohammed Abu Yousef:

بسم الله، نبدأ بعرض الأخطاء بالتدريج:

- في أول طلبتها مني، وضع الدالة، تمام، عندما وضعتها تظهر بالصورة التالية:

( لم يتم التعرف على بعض الخصائص )

تمام, يبدو أنك لم تقم بجلب حزمة Geolocator بشكل مناسب لأنه الخصائص هذه من الحزمة يمكنك مراجعة التوثيق من هنا, وجميع الخصائص الموجودة في الكود يمكنك التحقق منها ايضا.

بتاريخ 28 دقائق مضت قال Mohammed Abu Yousef:

وبالنسبة للخطوة الثانية ( على فرض أني قد قمت بتشغيل ال GPS بشكل يدوي )

فإن الخريطة تظهر، ويظهر أيضًا الزر للضغط، وعندما أقوم بالضغط لا يحدث شيء

لم أنشئ لك كود كامل لأخفاء و إظهار الخريطة , قمت فقط بوضع كود ليفحص GPS إذا شغال أو لا, باقي التفاصيل يمكنك تطبيقها بناءاً على ما تريد. بما أنه يمكنك فحص و معرفة حالة GPS يمكنك التحكم في إظهار و إخفاء الخريطة كما تريد.

  • 0
نشر (معدل)
بتاريخ 1 ساعة قال بلال زيادة:

تمام, يبدو أنك لم تقم بجلب حزمة Geolocator بشكل مناسب لأنه الخصائص هذه من الحزمة يمكنك مراجعة التوثيق من هنا, وجميع الخصائص الموجودة في الكود يمكنك التحقق منها ايضا.

يبدو أن هناك فرق في ال syntax بين إصدارات هذه المكتبة، الجواب الذي أرسلته بأي إصدار؟

- هل يمكن استبدال هذه المكتبة بمكتبة أخرى تؤدي نفس الوظيفة؟ وإذا كان الجواب ب نعم فما هي الاقترحات؟

لأني الصراحة تعبت منها كتير

تم التعديل في بواسطة Mohammed Abu Yousef
إضافة سؤال
  • 0
نشر

الحمد لله

قمت باستعمال حزمة location ونجحت بحمد الله

لكن عندي سؤال
( كما يظهر في الصورة المرفقة / عملية الانتقال إلى موقعي تتحقق سواء بالضغظ على الزر رقم 1 أو الزر رقم 3 )

- عند تفعيل الزر رقم 1 ( يتم إضافة دائرة زرقاء عند موقعي بالإضافة إلى سهم )

- أريد هذه الخصائص مع الزر رقم ثلاثة، وإخفاء الزر رقم 1

  • 0
نشر
بتاريخ 6 ساعات قال Mohammed Abu Yousef:

الحمد لله

قمت باستعمال حزمة location ونجحت بحمد الله

لكن عندي سؤال
( كما يظهر في الصورة المرفقة / عملية الانتقال إلى موقعي تتحقق سواء بالضغظ على الزر رقم 1 أو الزر رقم 3 )

- عند تفعيل الزر رقم 1 ( يتم إضافة دائرة زرقاء عند موقعي بالإضافة إلى سهم )

- أريد هذه الخصائص مع الزر رقم ثلاثة، وإخفاء الزر رقم 1

لا يوجد صورة مرفقة, أرجوا ان تقوم بإرفاقها.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...