Закрыть карточку или другой виджет внутри диалога? Он закрывает сам диалогAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Закрыть карточку или другой виджет внутри диалога? Он закрывает сам диалог

Сообщение Anonymous »

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»