show_update_dialog

Este pacote tem como objetivo ajudar a manter aplicativos Android e IOS atualizados, permitindo fazer a configuração para avisar automaticamente seus usuários sobre as atualizações. Basta inserir o bundleID da appleStore e androidId que o package faz comunicação direta comparando a versão da loja com a local.

Referências

Existe varias propriedades para customizar, aqui está uma ficha rápida:

PropriedadeDisponível emO que faz?
iOSIdShowUpdateDialogBundleID da appstore, responsável por buscar versão e notas da loja.
androidIdShowUpdateDialogAndroidID playstore, responsável por buscar a versão e notas na playStore.
iOSAppStoreCountryShowUpdateDialogAtenção você precisa definir esse parametro se seu app estiver publicado fora dos EUA. Basta informar a sigla do pais ex: 'BR', consulte em: ISO 3166-1 alpha-2.
titleshowCustomDialogUpdateÉ usado para mudar o titulo padrão do aviso da atualização.
buttonColorshowCustomDialogUpdatePode passar uma cor para o botão de atulização ex: Colors.blue
buttonTextshowCustomDialogUpdateÉ utilizado para alterar o texto do botão de atualização.
forceUpdateShowUpdateDialog, showCustomDialogUpdateMarcar true para esconder botão e impedir usuário de fechar a janela de atualização, forçando assim o usuário a atualizar o aplicativo.
bodyoverrideshowCustomDialogUpdateSobrescreve todo o body do showCustomDialogUpdate, você pode passar um widget completo.
overridebottomNavigationBarshowCustomDialogUpdateSobrescreve a bottomNavigationBar que contem o botão de atualizar.

Variavel do status da versão

Você pode utilizar informações da versão do seu app e loja de outras formas.

VariavelO que faz?
localVersionRetorna versão local do seu aplicativo.
appStoreLinkRetorna o link da loja baseado no sistema.
storeVersionUltima versão da loja de aplicativos.
releaseNotesRetorna as notas de atualizações da loja de aplicativo.

Exemplo de implementação:

    final versionCheck = ShowUpdateDialog(
        iOSId: 'com.dts.freefireth',
        androidId: 'com.dts.freefireth',
        iOSAppStoreCountry: 'BR');

    final VersionModel vs = await versionCheck.fetchVersionInfo();

    print(vs.localVersion);
    print(vs.appStoreLink);
    print(vs.storeVersion);
    print(vs.releaseNotes);

Como começar

Está é a forma de implementação mais simples, basta colocar no seu initState. O basico para iniciar é saber se você quer obrigar o usuário a atualizar, se sim, você precisar marcar true em forceUpdate. É importante saber se seu app está publicado apenas fora dos EUA, se sim você precisa definir a propriedade iOSAppStoreCountry.

Implementação simples

Está é a forma de implementação mais simples, basta colocar no seu initState.

  @override
  void initState() {
    final versionCheck = ShowUpdateDialog(
        iOSId: 'com.dts.freefireth',
        androidId: 'com.dts.freefireth',
        iOSAppStoreCountry: 'BR');

    versionCheck.showSimplesDialog(context);
  }

Implementação com custumização da tela

Está é uma das formas de alterar a tela de atualização.

verifyVersion() async {
    final versionCheck = ShowUpdateDialog(
        iOSId: 'com.dts.freefireth',
        androidId: 'com.dts.freefireth',
        iOSAppStoreCountry: 'BR');

    final VersionModel vs = await versionCheck.fetchVersionInfo();
    versionCheck.showCustomDialogUpdate(
      context: context,
      versionStatus: vs,
      buttonColor: Colors.black,
      buttonText: "Update :D",
      title: "Estamos mais novos do que nunca!",
      forceUpdate: true,
    );
  }

Implementação com widget customizado

Implementando destá forma você pode refazer a tela da forma que preferir basta passar um Widget.

  verifyVersion() async {
    final versionCheck = ShowUpdateDialog(
        iOSId: 'com.dts.freefireth',
        androidId: 'com.dts.freefireth',
        iOSAppStoreCountry: 'BR');

    final VersionModel vs = await versionCheck.fetchVersionInfo();

    versionCheck.showCustomDialogUpdate(
      context: context,
      versionStatus: vs,
      buttonText: "Update",
      buttonColor: Colors.green,
      bodyoverride: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Icon(
                Icons.update,
                size: 150,
                color: Colors.green,
              ),
            ],
          ),
          Text(
            "Please update your app",
            style: TextStyle(fontWeight: FontWeight.w700, fontSize: 18),
          ),
          Text(
            "Local version: ${vs.localVersion}",
            style: TextStyle(fontSize: 17),
          ),
          Text(
            "Store version: ${vs.storeVersion}",
            style: TextStyle(fontSize: 17),
          ),
          SizedBox(height: 30),
          Text(
            "${vs.releaseNotes}",
            style: TextStyle(fontSize: 15),
          ),
        ],
      ),
    );
  }
  }

Libraries

show_update_dialog