Покажу, как использовать пакет на примере регистрации синглтона.
/// code above
runApp(const VnApp());
}, (e, s) async {});
}
class VnApp extends StatefulWidget {
const VnApp({super.key});
@override
State<VnApp> createState() => _VnAppState();
}
class _VnAppState extends State<VnApp> {
GetIt getIt = GetIt.instance;
Затем используем
MultiRepositoryProvider и RepositoryProvider из пакета flutter_bloc для того, чтобы мы смогли обратиться к синглтону из любой части приложения. Переменная router у нас отвечает за навигацию с пакетом go_router.
MultiRepositoryProvider(
providers: [
RepositoryProvider(create: (context) => getIt),
RepositoryProvider(create: (context) => router),
],
И в initState «регистрируем» синглтон.
getIt.registerSingleton(router);
var storage = StorageRepository();
getIt.registerSingleton<StorageRepository>(storage);
Теперь, находясь на любой странице приложения, мы можем обратиться к нужному нам репозиторию с помощью
context.read<GetIt>().get<…>().
class MainPage extends StatelessWidget {
const MainPage({super.key});
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => MainBloc(
pageState: PageState(),
mainRepository: context.read<GetIt>().get<MainRepository>(),
profileRepository: context.read<GetIt>().get<ProfileRepository>(),
),
Get It — надежный инструмент для управления зависимостями в ваших приложениях Flutter, обеспечивая удобство, эффективность и чистоту кода.
Пишите о вашем опыте с Get It в чате!
