Como Utilizar o package_info_plus no Flutter para Informações do App

Introdução

O pacote package_info_plus é uma extensão do popular pacote package_info, mas com suporte aprimorado para plataformas adicionais e melhor manutenção. Ele permite acessar informações importantes sobre o aplicativo, como o nome, versão, número de build e muito mais.

Neste tutorial, exploraremos como integrar e usar o package_info_plus no Flutter para exibir informações do app de forma simples e eficiente.

1. Instalando o package_info_plus

Para começar, adicione o pacote ao seu projeto Flutter:


dependencies:
  package_info_plus: ^1.0.0

Depois, execute o comando:


flutter pub get

2. Configurando o package_info_plus

Não é necessária configuração adicional, pois o pacote funciona de forma nativa com as plataformas suportadas. Basta importar o pacote no seu arquivo Dart:


import 'package:package_info_plus/package_info_plus.dart';

3. Exibindo Informações do App

Vamos criar um exemplo simples para exibir o nome do app, versão e número de build:


import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("Informações do App")),
        body: const AppInfoScreen(),
      ),
    );
  }
}

class AppInfoScreen extends StatefulWidget {
  const AppInfoScreen({Key? key}) : super(key: key);

  @override
  _AppInfoScreenState createState() => _AppInfoScreenState();
}

class _AppInfoScreenState extends State {
  late Future _packageInfo;

  @override
  void initState() {
    super.initState();
    _packageInfo = PackageInfo.fromPlatform();
  }

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _packageInfo,
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          return const Center(child: CircularProgressIndicator());
        } else if (snapshot.hasError) {
          return Center(child: Text("Erro ao obter informações do app"));
        } else if (snapshot.hasData) {
          final info = snapshot.data!;
          return Padding(
            padding: const EdgeInsets.all(16.0),
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text("Nome do App: ${info.appName}", style: TextStyle(fontSize: 18)),
                Text("Pacote: ${info.packageName}", style: TextStyle(fontSize: 18)),
                Text("Versão: ${info.version}", style: TextStyle(fontSize: 18)),
                Text("Build: ${info.buildNumber}", style: TextStyle(fontSize: 18)),
              ],
            ),
          );
        } else {
          return const Center(child: Text("Nenhuma informação disponível"));
        }
      },
    );
  }
}

4. Exemplos Avançados

Você pode usar as informações do pacote para várias funcionalidades, como:

  • Exibir informações no menu de configurações do app.
  • Verificar atualizações com base na versão do app.
  • Fornecer detalhes técnicos em relatórios de erro.

Aqui está um exemplo de como usar o package_info_plus para verificar se a versão atual é a mais recente:


Future checkForUpdate() async {
  final packageInfo = await PackageInfo.fromPlatform();
  final currentVersion = packageInfo.version;

  // Simulando uma versão mais recente disponível
  const latestVersion = "2.0.0";

  if (currentVersion != latestVersion) {
    print("Atualização disponível! Versão mais recente: $latestVersion");
  } else {
    print("Você está na versão mais recente.");
  }
}

5. Considerações de Plataforma

O package_info_plus é compatível com as seguintes plataformas:

  • Android: Funciona automaticamente sem configuração adicional.
  • iOS: Requer integração básica com o projeto Xcode (geralmente automática com o flutter pub get).
  • Web: Suporte limitado dependendo do navegador.
  • Desktop: Funciona no Windows, macOS e Linux.

Publicar comentário