169 похожих чатов

Ребят, почему showDialog может ничего не показывать при нажатии?

11 ответов

18 просмотров

попробуй задать контейнеру размер и цвет

// Copyright 2019 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/gallery_localizations.dart'; import 'package:gallery/demos/material/material_demo_types.dart'; // Pressing the PopupMenuButton on the right of this item shows // a simple menu with one disabled item. Typically the contents // of this "contextual menu" would reflect the app's state. class _ContextMenuDemo extends StatelessWidget { const _ContextMenuDemo({Key key, this.showInSnackBar}) : super(key: key); final void Function(String value) showInSnackBar; @override Widget build(BuildContext context) { return ListTile( title: Text(GalleryLocalizations.of(context) .demoMenuAnItemWithAContextMenuButton), trailing: PopupMenuButton<String>( padding: EdgeInsets.zero, onSelected: (value) => showInSnackBar( GalleryLocalizations.of(context).demoMenuSelected(value), ), itemBuilder: (context) => <PopupMenuItem<String>>[ PopupMenuItem<String>( value: GalleryLocalizations.of(context).demoMenuContextMenuItemOne, child: Text( GalleryLocalizations.of(context).demoMenuContextMenuItemOne, ), ), PopupMenuItem<String>( enabled: false, child: Text( GalleryLocalizations.of(context).demoMenuADisabledMenuItem, ), ), PopupMenuItem<String>( value: GalleryLocalizations.of(context).demoMenuContextMenuItemThree, child: Text( GalleryLocalizations.of(context).demoMenuContextMenuItemThree, ), ), ], ), ); } }

Vladimir-Onokhov Автор вопроса

Вы за-push-иваете (showDialog()) Dialog внутри onTap по окончанию которого произойдет pop, так как onTap происходит на элементе меню (showMenu()) и это меню должно за-pop-ится, убраться. Поэтому после onTap наверху стека роутов (_hystory) будет не меню, а диалог, который должен был показаться, но по этой причине не покажется. Flutter эту ситуацию, я бы сказал, обрабатывает не правильно, если смотреть по _RouteLifecycle -ам. Он тупо берет из стека последенее и пытается его за-pop-ить, но такова логика. Можно перед вызовом showDialog() подождать до следующего цикла await Future.delayed(Duration.zero), тогда наверху в стеке, в текущем фрейме (там где onTap: () async ...) , будет именно меню и оно уберется, а в следующем фрейме уже за-push-ится Dialog и покажется.

Dmitrii Cheremisov
Вы за-push-иваете (showDialog()) Dialog внутри onT...

Коллега, а вас не смущает что у buder возвращает SizedBox. Shrink ()?

ManBearPig
Коллега, а вас не смущает что у buder возвращает ...

Нет, не смущает, я просто ответил на вопрос.

Vladimir-Onokhov Автор вопроса

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта