leancode_force_update 1.0.0-alpha+2 copy "leancode_force_update: ^1.0.0-alpha+2" to clipboard
leancode_force_update: ^1.0.0-alpha+2 copied to clipboard

PlatformAndroid
unlisted

An internal package that speeds up implementation of Force Update

example/lib/main.dart

import 'package:cqrs/cqrs.dart';
import 'package:example/force_update_screen.dart';
import 'package:example/suggest_update_dialog.dart';
import 'package:flutter/material.dart';
import 'package:leancode_force_update/data/contracts/contracts.dart';
import 'package:leancode_force_update/leancode_force_update.dart';
import 'package:mocktail/mocktail.dart';

class MockCqrs extends Mock implements Cqrs {}

class MockQuery extends Mock implements Query<VersionSupportDTO> {}

void main() {
  final forceUpdateController = ForceUpdateController(
    androidBundleId: 'com.example.example',
    appleAppId: '1111111111',
  );

  final cqrs = MockCqrs();
  registerFallbackValue(MockQuery());
  when(() => cqrs.get<VersionSupportDTO>(any())).thenAnswer(
    (_) async {
      return QuerySuccess(VersionSupportDTO(
        currentlySupportedVersion: '1.0.0',
        minimumRequiredVersion: '1.2.0',
        result: VersionSupportResultDTO.upToDate,
      ));
    },
  );

  runApp(MyApp(
    forceUpdateController: forceUpdateController,
    cqrs: cqrs,
  ));
}

class MyApp extends StatelessWidget {
  const MyApp({
    super.key,
    required ForceUpdateController forceUpdateController,
    required Cqrs cqrs,
  })  : _forceUpdateController = forceUpdateController,
        _cqrs = cqrs;

  final ForceUpdateController _forceUpdateController;
  final Cqrs _cqrs;

  @override
  Widget build(BuildContext context) {
    return ForceUpdateGuard(
      cqrs: _cqrs,
      suggestUpdateDialog: SuggestUpdateDialog(
        forceUpdateController: _forceUpdateController,
      ),
      forceUpdateScreen: ForceUpdateScreen(
        forceUpdateController: _forceUpdateController,
      ),
      controller: _forceUpdateController,
      child: MaterialApp(
        title: 'Force update demo',
        theme: ThemeData(
          colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
          useMaterial3: true,
        ),
        home: const MyHomePage(title: 'Force update demo page'),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(title),
      ),
      body: const Center(child: Text('Homepage')),
    );
  }
}