Возможно, это недостаток моего дизайна, но в данном случае я показываю 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