GOOGLE ADS

среда, 4 мая 2022 г.

Удаление OverLayEntry на кнопке «Назад» во Flutter

Я использую OverlayEntry и хочу удалить запись при нажатии Back Press.

OverlayEntry overlayEntry;
overlayEntry = OverlayEntry(builder: (c) {
return FullScreenLoader(
loaderText: "Placing Order",
);
},maintainState: true);
Overlay.of(context).insert(overlayEntry);

и метод Inside FullScreenLoader Build, который я использовал, onWillScopeно он все еще не работает.

@override
Widget build(BuildContext context) {
return new WillPopScope(
onWillPop: _onWillPop,
);
}
Future<bool> _onWillPop() {
return ""?? false;
}

Я просто хочу обнаружить физическую кнопку обратного нажатия, чтобы я мог удалить наложение на обратное нажатие.

Я что-то упускаю? Или с оверлеем нельзя?


Решение проблемы

То, как вы попробуете, должно сработать. Используйте WillPopScope для обнаружения обратного нажатия и удаления наложения, если оно видно.

Вот рабочий пример кода. Сохраните глобальную ссылку на запись оверлея и добавьте WillPopScope в метод сборки класса состояния:

class _XYZState extends State<XYZ> {
OverlayEntry _detailsOverlayEntry;
@override
Widget build(BuildContext context) {
return Container(
child: WillPopScope(
onWillPop: _onWillPop,
child: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: _kFallbackInitialCameraPosition,
polylines: _polylines.toSet(),
myLocationEnabled: false,
myLocationButtonEnabled: false,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
),
);
}
Future<bool> _onWillPop() {
if(_detailsOverlayEntry!= null){
_detailsOverlayEntry.remove();
_detailsOverlayEntry = null;
return Future.value(false);
}
return Future.value(true);
}
}

Как видите, _detailsOverlayEntry == nullпроверка условия используется для проверки того, видима ли запись оверлея. Если он виден, удалите его и установите для ссылки значение null.

В следующий раз, когда вы нажмете назад, появится маршрут.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...