import 'dart:convert'; import 'package:flutter/services.dart'; import 'package:hadi_hoda_flutter/core/constants/my_constants.dart'; import 'package:hadi_hoda_flutter/core/error_handler/my_exception.dart'; import 'package:hadi_hoda_flutter/core/network/http_request.dart'; import 'package:hadi_hoda_flutter/core/response/base_response.dart'; import 'package:hadi_hoda_flutter/features/level/data/model/level_model.dart'; import 'package:hadi_hoda_flutter/features/level/domain/entity/level_entity.dart'; import 'package:hive/hive.dart'; abstract class IIntroDatasource { Future saveLevels(); } class IntroDatasourceImpl implements IIntroDatasource { final IHttpRequest httpRequest; const IntroDatasourceImpl(this.httpRequest); @override Future saveLevels() async { try { final Box levelBox = Hive.box(MyConstants.levelBox); if (levelBox.isEmpty) { final String levelAssets = await rootBundle.loadString( 'assets/json/levels.json', ); final dynamic response = jsonDecode(levelAssets); final List levelList = BaseResponse.getDataList( response?['result'], (json) => LevelModel.fromJson(json), ); await levelBox.addAll(levelList); } } catch (e) { throw MyException(errorMessage: '$e'); } } }