Мне нужно поделиться своим экземпляром dio 'apiClient' с маршрутизатором и всеми репозиториями.
Мой вопрос заключается в том, как запустить маршрутизатор fluro с помощью apiClient для управления errorInterceptor, когда срок действия моего токена истек, и для выхода текущего пользователя с помощью flutter_blo c.
Ниже часть моего кода.
main() {
WidgetsFlutterBinding.ensureInitialized();
BlocSupervisor.delegate = SimpleBlocDelegate();
AuthenticationBloc authBloc;
final ApiClient apiClient =
ApiClient(onRevoke: () => authBloc.add(LoggedOut()));
final UserRepository userRepository = UserRepository(netUtil: apiClient);
authBloc = AuthenticationBloc(userRepository: userRepository);
runApp(
BlocProvider.value(
value: authBloc..add(AppStarted()),
child: App(
userRepository: userRepository,
apiClient: apiClient,
),
),
);
}
class App extends StatefulWidget {
final UserRepository _userRepository;
final ApiClient _apiClient;
App({Key key, @required UserRepository userRepository, @required apiClient})
: assert(
userRepository != null,
),
_userRepository = userRepository,
assert(apiClient != null),
_apiClient = apiClient,
super(key: key);
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> with WidgetsBindingObserver {
_AppState() {
final router = Router();
Routes.configureRoutes(router, _apiClient);
Application.router = router;
}
}
class Routes {
static String root = "/";
static String view1 = "/view1";
}
static void configureRoutes
(
Router router, ApiClient
apiClient ){
});
router.define(root, handler: rootHandler);
router.define(view1,handler: view1Handler,transitionType: TransitionType.material);
}
var view1Handler =
Handler(handlerFunc: (BuildContext context, Map<String, List> params) {
return BlocProvider(
create: (context) => View1FormBloc(),
child: View1Form(
user: null,
isEditing: false,
onSave: null,
),);
});