User avatar

tidak bisa otomatis latitude n longitude

Khoiru Kusuma 1 month ago
Open
Ticket Screenshot

kenapa latitude dan longitude saya tidak otomatis terisi. padahal utk source codenya sudah sama

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

circle merah tidak muncul saat buat kehadiram

suparman van varage 1 month ago
Open
Ticket Screenshot

Mohon bantuannya kan

saya sudah ikutin tutotial , tapi ada kendala saat buat circle lokasi
di saya tidak muncul

terima kasih

User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

tolong kirimkan class MapNotifier dan MapScreen

User avatar
suparman van varage 1 month ago

Map_notifier

import 'package:flutter/material.dart';
import 'package:flutter_osm_plugin/flutter_osm_plugin.dart';
import 'package:hrims_mobile_app/app/module/entity/schedule.dart';
import 'package:hrims_mobile_app/app/module/use_case/schedule_get.dart';
import 'package:hrims_mobile_app/core/helper/location_helper.dart';
import 'package:hrims_mobile_app/core/provider/app_provider.dart';
import 'package:geolocator/geolocator.dart';

class MapNotifier extends AppProvider {
  final ScheduleGetUseCase _scheduleGetUseCase;
  MapNotifier(this._scheduleGetUseCase) {
    init();
  }

  MapController _mapController = MapController.withPosition(
    initPosition: GeoPoint(
      latitude: -6.4185591569345,
      longitude: 106.73516834336,
    ),
  );

  late ScheduleEntity? _schedule;
  late CircleOSM _circle;
  bool _isGrantedLocation = false;
  bool _isEnabledLocation = false;
  MapController get mapController => _mapController;

  bool get isGrantedLocaiton => _isGrantedLocation;
  bool get isEnabledLocation => _isEnabledLocation;

  ScheduleEntity? get schedule => _schedule;

  @override
  void init() async {
    await _getEnableAndPermission();
    await _getSchedule();
  }

  _getEnableAndPermission() async {
    showLoading();
    _isGrantedLocation = await LocationHelper.isGrantedLocationPermission();
    if (_isGrantedLocation) {
      _isEnabledLocation = await LocationHelper.isEnabledLocationService();
      if (!_isEnabledLocation) {
        errorMeesage = 'Harap mengaktifkan GPS';
      }
    } else {
      errorMeesage = 'Harap menyetujui permission';
    }
    hideLoading();
  }

  _getSchedule() async {
    showLoading();
    final response = await _scheduleGetUseCase();
    if (response.success) {
      _schedule = response.data!;

      _circle = CircleOSM(
        key: 'Center-Point',
        centerPoint: GeoPoint(
          latitude: _schedule!.office.latitude,
          longitude: _schedule!.office.longitude,
        ),
        radius: _schedule!.office.radius,
        color: Colors.red.withValues(alpha: 0.5),
        strokeWidth: 2,
        borderColor: Colors.red,
      );
    } else {
      errorMeesage = response.message;
    }
    hideLoading();
  }

  checkLocationPermission() async {
    _isGrantedLocation = await LocationHelper.isGrantedLocationPermission();
    if (!_isGrantedLocation && !isDispose) {
      checkLocationPermission();
    } else {
      errorMeesage = '';
      init();
    }
  }

  checkLocationService() async {
    _isEnabledLocation = await LocationHelper.isEnabledLocationService();
    if (!_isEnabledLocation && !isDispose) {
      checkLocationService();
    } else {
      errorMeesage = '';
      init();
    }
  }

  mapIsReady() async {
    // _openStreamCurrentLocation();
    await mapController.drawCircle(_circle);
  }
}
User avatar
suparman van varage 1 month ago

Map_Scree

import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:flutter_osm_plugin/flutter_osm_plugin.dart';
import 'package:hrims_mobile_app/app/presentation/map/map_notifier.dart';
import 'package:hrims_mobile_app/core/helper/global_helper.dart';
import 'package:hrims_mobile_app/core/helper/location_helper.dart';
import 'package:hrims_mobile_app/core/widget/app_widget.dart';
import 'package:hrims_mobile_app/core/widget/loading_app_widget.dart';

class MapScreen extends AppWidget<MapNotifier, void, void> {
  @override
  void checkVariableBeforeUi(BuildContext context) {
    if (!notifier.isGrantedLocaiton) {
      alternatifErrorButton = FilledButton(
        onPressed: () async {
          await LocationHelper.showDialogLocationPermission(context);
          notifier.checkLocationPermission();
        },
        child: Text('Setujui'),
      );
    } else if (!notifier.isEnabledLocation) {
      alternatifErrorButton = FilledButton(
        onPressed: () async {
          LocationHelper.openLocationSetting();
          notifier.checkLocationService();
        },
        child: Text('Buka Pengaturan Lokasi'),
      );
    } else {
      alternatifErrorButton = null;
    }
  }

  @override
  AppBar? appBarBuild(BuildContext context) {
    return AppBar(title: Text('Data Kehadiran'));
  }

  @override
  Widget bodyBuild(BuildContext context) {
    return SafeArea(
      child: Column(
        children: [
          Expanded(
            child: OSMFlutter(
              controller: notifier.mapController,
              osmOption: OSMOption(
                zoomOption: const ZoomOption(
                  initZoom: 15.5,
                  maxZoomLevel: 17.5,
                  minZoomLevel: 10,
                ),
              ),
              onMapIsReady: (p0) {
                if (p0) {
                  notifier.mapIsReady();
                }
              },
              mapIsLoading: LoadingAppWidget(),
            ),
          ),
          _footerLayout(context),
        ],
      ),
    );
  }

  _footerLayout(BuildContext context) {
    return Container(
      width: double.maxFinite,
      padding: EdgeInsets.all(20),
      child: Column(
        children: [
          Row(
            children: [
              Expanded(child: SizedBox()),
              Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: [
                  Row(
                    mainAxisSize: MainAxisSize.min,
                    children: [
                      Icon(Icons.location_city, size: 30),
                      SizedBox(width: 5),
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text(
                            notifier.schedule?.office.name ?? '',
                            style: GlobalHelper.getTextStyle(
                              context,
                              appTextStyle: AppTextStyle.TITLE_MEDIUM,
                            ),
                          ),
                          Container(
                            padding: EdgeInsets.symmetric(
                              vertical: 2,
                              horizontal: 5,
                            ),
                            decoration: BoxDecoration(
                              borderRadius: BorderRadius.circular(4),
                              color: GlobalHelper.getColorSchema(
                                context,
                              ).primary,
                            ),
                            child: Text(
                              (notifier.schedule?.isWfa ?? false)
                                  ? 'WFA'
                                  : 'WFO',
                              style:
                                  GlobalHelper.getTextStyle(
                                    context,
                                    appTextStyle: AppTextStyle.BODY_SMALL,
                                  )?.copyWith(
                                    color: GlobalHelper.getColorSchema(
                                      context,
                                    ).onPrimary,
                                  ),
                            ),
                          ),
                        ],
                      ),
                    ],
                  ),
                  SizedBox(height: 5),
                  Row(
                    mainAxisSize: MainAxisSize.min,
                    children: [
                      Icon(Icons.access_time, size: 30),
                      SizedBox(width: 5),
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text(
                            notifier.schedule?.shift.name ?? '',
                            style: GlobalHelper.getTextStyle(
                              context,
                              appTextStyle: AppTextStyle.TITLE_MEDIUM,
                            ),
                          ),
                          Text(
                            '${notifier.schedule?.shift.startTime ?? ''} - ${notifier.schedule?.shift.endTime ?? ''}',
                            style: GlobalHelper.getTextStyle(
                              context,
                              appTextStyle: AppTextStyle.BODY_SMALL,
                            ),
                          ),
                        ],
                      ),
                    ],
                  ),
                ],
              ),
              Expanded(child: SizedBox()),
            ],
          ),
          SizedBox(height: 10),
          Container(
            width: double.maxFinite,
            child: FilledButton(onPressed: () {}, child: Text('Kirim')),
          ),
        ],
      ),
    );
  }
}
User avatar
suparman van varage 1 month ago

Depedency

import 'package:get_it/get_it.dart';
import 'package:dio/dio.dart';
import 'package:hrims_mobile_app/app/data/repository/attendance_repository.dart';
import 'package:hrims_mobile_app/app/data/repository/auth_repository.dart';
import 'package:hrims_mobile_app/app/data/repository/schedule_repository.dart';
import 'package:hrims_mobile_app/app/data/source/attendance_api_service.dart';
import 'package:hrims_mobile_app/app/data/source/auth_api_service.dart';
import 'package:hrims_mobile_app/app/data/source/schedule_api_service.dart';
import 'package:hrims_mobile_app/app/module/repository/attendance_repository.dart';
import 'package:hrims_mobile_app/app/module/repository/auth_repository.dart';
import 'package:hrims_mobile_app/app/module/repository/schedule_repository.dart';
import 'package:hrims_mobile_app/app/module/use_case/attendance_get_this_month.dart';
import 'package:hrims_mobile_app/app/module/use_case/attendance_get_today.dart';
import 'package:hrims_mobile_app/app/module/use_case/auth_login.dart';
import 'package:hrims_mobile_app/app/module/use_case/schedule_get.dart';
import 'package:hrims_mobile_app/app/presentation/home/home_notifier.dart';
import 'package:hrims_mobile_app/app/presentation/login/login_notifier.dart';
import 'package:hrims_mobile_app/app/presentation/map/map_notifier.dart';
import 'package:hrims_mobile_app/core/network/app_interceptor.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';

final sl = GetIt.instance;

Future<void> initDependency() async {
  //dio
  Dio dio = Dio();
  dio.interceptors.add(AppInterceptor());
  dio.interceptors.add(
    PrettyDioLogger(
      requestBody: true,
      requestHeader: true,
      responseBody: true,
      responseHeader: true,
      compact: true,
    ),
  );
  sl.registerSingleton<Dio>(dio);

  //apiservice
  sl.registerSingleton<AuthApiService>(AuthApiService(sl()));
  sl.registerSingleton<AttendanceApiService>(AttendanceApiService(sl()));
  sl.registerSingleton<ScheduleApiService>(ScheduleApiService(sl()));

  //repositoy
  sl.registerSingleton<AuthRepository>(AuthRepositoryImpl(sl()));
  sl.registerSingleton<AttendanceRepository>(AttendanceRepositoryImpl(sl()));
  sl.registerSingleton<ScheduleRepository>(ScheduleRepositoryImpl(sl()));

  //usecase
  sl.registerSingleton<AuthLoginUseCase>(AuthLoginUseCase(sl()));
  sl.registerSingleton<AttendanceGetTodayUseCase>(
    AttendanceGetTodayUseCase(sl()),
  );
  sl.registerSingleton<AttendanceGetMonthUseCase>(
    AttendanceGetMonthUseCase(sl()),
  );
  sl.registerSingleton<ScheduleGetUseCase>(ScheduleGetUseCase(sl()));

  //provider
  sl.registerFactoryParam<LoginNotifier, void, void>(
    (param1, param2) => LoginNotifier(sl()),
  );
  sl.registerFactoryParam<HomeNotifier, void, void>(
    (param1, param2) => HomeNotifier(sl(), sl(), sl()),
  );
  sl.registerFactoryParam<MapNotifier, void, void>(
    (param1, param2) => MapNotifier(sl()),
  );
}
User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

pada fungsi berikut, coba kirimkan value variabel _circle?

 mapIsReady() async {
// _openStreamCurrentLocation();
 await mapController.drawCircle(_circle);
}
User avatar
suparman van varage 1 month ago

variablenya lihat dimana?

User avatar
suparman van varage 1 month ago

saya sdh ubah ke manualnya kan
hanya saja saat masuk ke function _OpenStreamCurrentLocation

lokasi yang didapat salah. dapatnya lokasi luar negri

User avatar
Septiawan Aji Pradana Mentor 1 month ago

itu karena pengaturan lokasi emulatornya Mas, coba setting dulu lokasi emulatornya.

User avatar
suparman van varage 1 month ago

iya sudah bisa mas.
kemaren saya coba pakai HP sebagai emulatornya

sekarang lanjut proses tahap selanjutnya

terimakasih mas Septi

User avatar
suparman van varage 1 month ago

iya sudah bisa mas.
kemaren saya coba pakai HP sebagai emulatornya

sekarang lanjut proses tahap selanjutnya

terimakasih mas Septi

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

Error Flutter build apk

BADRI SULISTIO 1 month ago
Open
Ticket Screenshot

mohon bantuannya kak, belum berhasil build.

User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

Ketika dijalankan

flutter run

 sukses mas?

Segera berlangganan untuk memberikan komentar di forum ini.
Ticket Screenshot

E/flutter (30788): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code.     
E/flutter (30788): The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled"
E/flutter (30788): Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
E/flutter (30788): In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code.

User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

Dari log tersrbut, terdapat request api yang response nya 403. Bisa dicek dan diinfokan lagi api mana yang mendapatkan response 403 tsb.

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

stuck di loading screen

Septiyan Abdurrohman 2 months ago
Open
Ticket Screenshot

tidak mau pindah ke homescreen padahal sudah berhasil login di debug console

User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

Tolong kirimkan login screen dan login notifier

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

kenapa circle saya tidak muncul ya ?

Sony Muzakki 3 months ago
Open
Ticket Screenshot

jika saya buat lat dan long nya manual , tanpa ambil dari notifier circle nya muncul , 
tp ambil dr notifier itu circle nya ga muncul , kira2 kendalanya dimana ya mas 

User avatar
Sony Muzakki 3 months ago

tidak muncul kalau ambil dr notifier 

User avatar
Sony Muzakki 3 months ago

tidak muncul kalau ambil dr notifier 

Comment image
User avatar
Sony Muzakki 3 months ago

sudah solve mas, terimkasih 

Segera berlangganan untuk memberikan komentar di forum ini.
Ticket Screenshot

saya menjalankan projek yang sudah selesai ketika di jalanka muncul gini

User avatar
Mentor Flutter Dewakoding Mentor 1 month ago

Terkait kendala yang dihadapi, terdapat atribut dari response dari api yang NULL tetapi di flutter required String (tidak boleh NULL). Bisa di cek lebih lanjut untuk atribut mana yang bermasalah

Segera berlangganan untuk memberikan komentar di forum ini.

Saya ingin implementasi afterStateHyrdrated di bagian leaflet openstreet map tapi eror karena method OSMap tidak menyediakan fungsi tersebut padahal saya sudah mengikuti satu per satu tutorial dari awal

Segera berlangganan untuk memberikan komentar di forum ini.
Ticket Screenshot

mas, ini fitur banned sy non aktifkan tp kamera tidak muncul ?

User avatar
joe wijaya 3 months ago

kena banned juga mas, pusing dah 

Segera berlangganan untuk memberikan komentar di forum ini.
User avatar

adb error setelah upgrade flutter

joe wijaya 4 months ago
Closed
Ticket Screenshot

mas, sy kan upgrade flutter, malah keluar eror adb error

User avatar
joe wijaya 4 months ago

udah bisa mas, sy ganti emu

Diskusi ini telah ditutup

Buat Pertanyaan Baru

Edit Pertanyaan

Konfirmasi Hapus

Apakah Anda yakin ingin menghapus pertanyaan ini? Tindakan ini tidak dapat dibatalkan.