Динамический многоуровневый CupertinoPicker искажает выравнивание первого текстового элемента при переключении между списками
Я пытаюсь создать динамический многоуровневый CupertinoPicker. Когда вы выбираете тип местоположения из первого списка, он отображает список местоположений, соответствующих этому типу. Эта часть работает нормально, проблема в том, что если я переключусь на другой список местоположений, первый текстовый виджет второго списка местоположений будет иметь отступ в соответствии с первым текстовым виджетом первого списка местоположений.
Я попытался указать, что виджет "Текст" должен быть выровнен по центру, используя "alignment: TextAlignment.center". Я также попытался установить для местоположения значение null при переключении между списками местоположений. Ни то, ни другое не решило проблему и не дало видимого эффекта.
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
padding: EdgeInsets.only(bottom: 5.0),
height: pickerHeight,
width: logicalSize.width,
child: CupertinoPicker(
backgroundColor: Colors.white,
itemExtent: 32.0,
onSelectedItemChanged: (selectedIndex) {
setState(() {
location = null;
locationType = locationTypeList[selectedIndex];
});
},
children: pickerLocationType,
),
),
Container(
height: pickerHeight,
width: logicalSize.width,
child: CupertinoPicker(
backgroundColor: Colors.white,
itemExtent: 30.0,
onSelectedItemChanged: (selectedIndex) {
setState(() {
location = null;
if (locationType == 'Campus') {
location = campusList[selectedIndex];
}
if (locationType == 'City') {
location = cityList[selectedIndex];
}
});
},
children: pickerMap[locationType],
),
),
В результате должна получиться первая строка (представьте, что она установлена в CupertinoPicker):
---------------------------------- Город 1 -------------- ------------------------
---------------------------------- Город 2--------------------------------------
Но это больше похоже на:
------------------------------- Город 1 ----------------- ------------------------
---------------------------------- Город 2--------------------------------------
Если нужны изображения, я отредактирую этот пост со ссылкой на них.
1 ответ
Я нашел решение. Увидеть ниже:
Container(
key: ValueKey(this._locationType),
height: pickerHeight,
width: logicalSize.width,
child: CupertinoPicker(
backgroundColor: Colors.white,
itemExtent: 30.0,
onSelectedItemChanged: (selectedIndex) {
setState(() {
location = null;
if (locationType == 'Campus') {
location = campusList[selectedIndex];
}
if (locationType == 'City') {
location = cityList[selectedIndex];
}
});
},
children: pickerMap[locationType],
),
),