Assim como foi feito para o hive, poderíamos (como uma alternativa) criar um serviço (SharedPreferencesService) para encapsular a lógica de acesso ao pacote shared_preferences:

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

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

// Serviço para lidar com SharedPreferences
class SharedPreferencesService {
  final String tokenKey = 'authToken';

  Future<void> saveToken(String token) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString(tokenKey, token);
    print('Token salvo!');
  }

  Future<String?> getToken() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return prefs.getString(tokenKey);
  }
}

class MyApp extends StatelessWidget {
  final SharedPreferencesService _prefsService = SharedPreferencesService();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Exemplo de SharedPreferences com Service'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  await _prefsService.saveToken('meuTokenDeAutenticacao');
                },
                child: Text('Salvar Token'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () async {
                  String? authToken = await _prefsService.getToken();
                  print('Token recuperado: $authToken');
                },
                child: Text('Buscar Token'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}


Neste exemplo, criamos o SharedPreferencesService, que encapsula as operações de salvar e buscar o token de autenticação. O serviço é responsável por interagir com o shared_preferences.

O restante do aplicativo usa esse serviço para executar operações no SharedPreferences. Pressionando o botão "Salvar Token", ele usará o serviço para salvar o token e, ao pressionar o botão "Buscar Token", ele buscará e exibirá o token armazenado (no console).