Перейти к основному содержимому

DuitViewHost

Виджет DuitViewHost отвечает за инициализацию связанного драйвера и подписку на обновления дерева виджетов в процессе работы Duit.

Конструкторы​

DuitViewHost​

Основной конструктор, принимающий UIDriver (автоматически оборачивается в XDriver).

DuitViewHost({
required UIDriver driver,
Widget? placeholder,
Widget? child,
bool invertStack = false,
bool showChildInsteadOfPlaceholder = false,
GestureInterceptor? gestureInterceptor,
GestureInterceptorBehavior gestureInterceptorBehavior = GestureInterceptorBehavior.onlyWithAction,
Widget Function(BuildContext context, Object? err)? errorWidgetBuilder,
String viewTag = "",
SliverGridDelegatesRegistry sliverGridDelegatesRegistry = const {},
});

DuitViewHost.withDriver​

Конструктор для использования с XDriver напрямую.

const DuitViewHost.withDriver({
required XDriver driver,
// ... остальные параметры аналогичны
});

Параметры​

ПараметрТипПо умолчаниюОписание
driverUIDriver / XDriver—Драйвер, управляющий представлением (обязательный)
placeholderWidget?nullВиджет-заглушка во время загрузки
childWidget?nullДочерний виджет для наложения на Duit-представление
invertStackboolfalseПорядок виджетов в Stack (true = child сверху)
showChildInsteadOfPlaceholderboolfalseПоказывать child вместо placeholder
gestureInterceptorFunction?nullПерехватчик жестов
errorWidgetBuilderFunction?nullФункция для построения виджета ошибки
viewTagString""Тег для идентификации представления
sliverGridDelegatesRegistryMap{}Реестр делегатов для SliverGrid

Пример использования​

Базовое использование​

class MyScreen extends StatelessWidget {

Widget build(BuildContext context) {
final driver = XDriver.remote(
transportManager: HttpTransportManager(
url: '/api/layout',
baseUrl: 'https://api.example.com',
),
);

return DuitViewHost.withDriver(
driver: driver,
placeholder: const Center(
child: CircularProgressIndicator(),
),
);
}
}

С обработкой ошибок​

DuitViewHost.withDriver(
driver: driver,
placeholder: const CircularProgressIndicator(),
errorWidgetBuilder: (context, error) {
return Center(
child: Text('Ошибка загрузки: $error'),
);
},
);

С перехватчиком жестов​

DuitViewHost.withDriver(
driver: driver,
gestureInterceptor: (gestureType, action, data) {
print('Gesture: $gestureType, Action: $action');
},
gestureInterceptorBehavior: GestureInterceptorBehavior.always,
);
подсказка

Для управления жизненным циклом виджета вручную используйте методы driver.init() и driver.dispose() в соответствующих методах State.