#flutter #dart #dynamic #setstate
#трепетание #дротик #динамический #setstate
Вопрос:
Я пытаюсь изменить текст TextButton с помощью setState, но по какой-то причине он не работает.
Первоначальное объявление:
var selectedCountry = ' 91';
Функция сборки:
// вызывается внутри функции сборки
Widget _buildPhoneNumberFormWidget() {
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
getGlassEffect(
TextButton(
onPressed: () {
_showPicker();
},
child: Text(
selectedCountry,
style: AppTextStyle.textStyleRegular,
),
style: TextButton.styleFrom(
backgroundColor:
kGlassColor.withOpacity(kAppWidgetColorOpacityFactor),
minimumSize: Size(
SizeConfig.screenWidth * kAppButtonWidthFactor,
SizeConfig.screenHeight * kAppButtonHeightFactor),
maximumSize: Size(
SizeConfig.screenWidth * kAppButtonWidthFactor,
SizeConfig.screenHeight * kAppButtonHeightFactor),
),
),
),
SizedBox(
height: SizeConfig.screenHeight * 0.05,
),
_buildTextFieldWidget(kPhoneNumberHintText, phoneController),
SizedBox(
height: SizeConfig.screenHeight * 0.05,
),
///BUTTON
getGlassEffect(_sendOtpButton())
],
),
);
}
...
_showPicker() {
showCountryPicker(
context: context,
showPhoneCode: true,
),
onSelect: (Country country) => _setCountryCode(country.phoneCode),
);
}
...
_setCountryCode(countryPhoneCode) {
setState(() {
_isCountrySelected = true;
selectedCountry = countryPhoneCode;
});
}
Выбранная страна больше нигде не отображается в коде.
Если это поможет, я использую пакет country_picker .
Комментарии:
1. Из кода, которым вы поделились здесь, это кажется правильным — может быть, вы установили значение по умолчанию
selectedCountry
в своей функции сборки? Если возможно, пожалуйста, поделитесь своим виджетом целиком, чтобы его можно было лучше понять!2. Я обнаружил, что у меня была условная сборка _buildPhoneNumberFormWidget(); моя ошибка.