Я пытаюсь использовать AlertDialog во флаттере, где пользователь может нажать карту, чтобы выбрать значок. После того, как они выбрали значок, AlertDialog должен отобразить только что выбранный значок.
Прямо сейчас у меня есть так, что каждый раз, когда пользователь нажимает на карту, карта перезагружается. Однако это означает, что если я выберу значок, мне нужно нажать, чтобы выбрать второй значок, прежде чем он будет перезагружен с моим предыдущим изменением.
Все советы и / или различные идеи о том, как справиться с подобными проблемами, приветствуются.
Вот код, который у меня ниже:
import 'package:flutter/material.dart';
import 'package:test_003/data/dataStoreLegendItems.dart'; //has defaultIcon which should get updated
import 'package:test_003/dialogs/iconPickerDialog.dart';
class IconPickerCard extends StatefulWidget {
var alertDialogContext;
IconPickerCard({this.alertDialogContext});
@override
_IconPickerCardState createState() => _IconPickerCardState();
}
class _IconPickerCardState extends State<IconPickerCard> {
@override
Widget build(BuildContext context) {
return new Card(
child: ListTile(
leading: legendItems.defaultIcon,
title: Text('Select Icon'),
onTap: () async {
setState(() {
print("First line of IconPickerCard set state");
showIconPickerDialog(widget.alertDialogContext);
print('Icon Picker Card List Tile pressed');
});
},
),
);
}
}
Это вызывается диалоговым окном предупреждений:
import 'package:flutter/material.dart';
import 'package:test_003/components/iconPickerForPopup.dart';
class ReuseAddPopup extends StatefulWidget {
@override
_ReuseAddPopupState createState() => _ReuseAddPopupState();
}
class _ReuseAddPopupState extends State<ReuseAddPopup> {
@override
Widget build(BuildContext context) {
return AlertDialog(
content: Column(
children: [
IconPickerCard(alertDialogContext: context),
],
),
);
}
}
Вот как это выглядит: Диалоговое окно предупреждения Затем при нажатии карты: IconPicker После выбора значка изменения не отражаются на карте, пока карта не будет нажата. снова: После выбора значка