Возможно, это недостаток моего дизайна, но в данном случае я показываю flutter_map внутри диалога, используя showDialog(...){.... На этой карте у меня есть несколько маркеров, при нажатии на которые появляется карточка с текстом. Я бы хотел, чтобы пользователь мог закрыть эту карту. Но когда я добавляю CloseButton() в каждую карту, он закрывает весь диалог, а не только карту, которой он принадлежит.
Ниже приведен очень простой пример, основанный на примере карты флаттера, который демонстрирует мою проблему без сложности карты и маркеров.
Диалоговое окно закрывается при каждом нажатии кнопки закрытия карты. Я хотел бы закрыть только карточку, которой она принадлежит, и оставить диалоговое окно открытым. Вот код:
import 'package:flutter/material.dart';
/// Flutter code sample for [Card].
void main() => runApp(const CardExampleApp());
class CardExampleApp extends StatelessWidget {
const CardExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Card Sample')),
body: MyExample(),
),
);
}
}
class MyExample extends StatelessWidget {
const MyExample({super.key});
@override
Widget build(BuildContext context) {
return ElevatedButton(
child: Text("press to show dialog"),
onPressed: () {
showDialog(
barrierDismissible: true,
barrierColor: Colors.red.withAlpha(90),
context: context,
builder: (BuildContext ctx) {
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent, width: 2),
borderRadius: BorderRadius.circular(8.0),
),
child: Column(
children: [
MyCard(text: "item"),
MyCard(text: "another item"),
MyCard(text: "another item"),
],
),
);
},
);
},
);
}
}
class MyCard extends StatelessWidget {
final String text;
const MyCard({super.key, required this.text});
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [CloseButton(), Text("the contents: $text")],
),
),
);
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... log-itself
Закрыть карточку или другой виджет внутри диалога? Он закрывает сам диалог ⇐ Android
Форум для тех, кто программирует под Android
1763846916
Anonymous
Возможно, это недостаток моего дизайна, но в данном случае я показываю flutter_map внутри диалога, используя showDialog(...){.... На этой карте у меня есть несколько маркеров, при нажатии на которые появляется карточка с текстом. Я бы хотел, чтобы пользователь мог закрыть эту карту. Но когда я добавляю CloseButton() в каждую карту, он закрывает весь диалог, а не только карту, которой он принадлежит.
Ниже приведен очень простой пример, основанный на примере карты флаттера, который демонстрирует мою проблему без сложности карты и маркеров.
Диалоговое окно закрывается при каждом нажатии кнопки закрытия карты. Я хотел бы закрыть [b]только карточку, которой она принадлежит[/b], и оставить диалоговое окно открытым. Вот код:
import 'package:flutter/material.dart';
/// Flutter code sample for [Card].
void main() => runApp(const CardExampleApp());
class CardExampleApp extends StatelessWidget {
const CardExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Card Sample')),
body: MyExample(),
),
);
}
}
class MyExample extends StatelessWidget {
const MyExample({super.key});
@override
Widget build(BuildContext context) {
return ElevatedButton(
child: Text("press to show dialog"),
onPressed: () {
showDialog(
barrierDismissible: true,
barrierColor: Colors.red.withAlpha(90),
context: context,
builder: (BuildContext ctx) {
return Container(
decoration: BoxDecoration(
border: Border.all(color: Colors.blueAccent, width: 2),
borderRadius: BorderRadius.circular(8.0),
),
child: Column(
children: [
MyCard(text: "item"),
MyCard(text: "another item"),
MyCard(text: "another item"),
],
),
);
},
);
},
);
}
}
class MyCard extends StatelessWidget {
final String text;
const MyCard({super.key, required this.text});
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [CloseButton(), Text("the contents: $text")],
),
),
);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79827343/close-a-card-or-some-other-widget-inside-a-dialog-it-closes-the-dialog-itself[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия