idle_save 0.3.2 copy "idle_save: ^0.3.2" to clipboard
idle_save: ^0.3.2 copied to clipboard

Engine-level save SDK for idle games, deterministic serialization, versioned migrations, and observable save boundaries.

example/example.dart

// ignore_for_file: public_member_api_docs
import 'package:idle_core/idle_core.dart';
import 'package:idle_save/idle_save.dart';

class GameState extends IdleState {
  const GameState({required this.level, required this.coins});

  final int level;
  final int coins;

  @override
  Map<String, dynamic> toJson() => {'level': level, 'coins': coins};

  static GameState fromJson(Map<String, dynamic> json) {
    return GameState(
      level: json['level'] as int? ?? 0,
      coins: json['coins'] as int? ?? 0,
    );
  }
}

Future<void> main() async {
  final store = MemoryStore();
  final manager = idleCoreSaveManager<GameState>(
    store: store,
    codec: const JsonSaveCodec(),
    migrator: Migrator(latestVersion: 1),
    decoder: GameState.fromJson,
  );

  final saveResult = await manager.save(
    const GameState(level: 1, coins: 10),
    context: SaveContext(
      reason: SaveReason.manual,
      changeSet: SaveChangeSet(updated: ['level', 'coins']),
    ),
  );
  if (saveResult is SaveFailure) {
    print('Save failed: ${saveResult.reason}');
  }

  final result = await manager.migrateIfNeeded();
  if (result case LoadSuccess<GameState>(:final value)) {
    print('Loaded: level=${value.level}, coins=${value.coins}');
  }
}
1
likes
160
points
331
downloads

Publisher

unverified uploader

Weekly Downloads

Engine-level save SDK for idle games, deterministic serialization, versioned migrations, and observable save boundaries.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

clock, crypto, idle_core

More

Packages that depend on idle_save