Я тоже пишу бек на java (spring boot) и проходил эти вопросы)
Получилась такая схема
на старте приложения
final authenticator = new AuthTokenApi(resetTokenUrl);
new ServerApi(authenticator, apiBaseUrl);
var isAuthenticated = await authenticator.authenticate();
тут собственно развилка на логинку и само приложение
AuthTokenApi под капотом использует FlutterSecureStorage для получения токена из персистентного хранилища. ну а дальше каждый клиент (в данном случае ServerApi), который делает непосредственно сетевые запросы получает токен от AuthTokenApi