Трепетание — невозможно динамически изменять текст кнопки

#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 .

Я отладил и увидел, что значение selectedCountry изменяется правильно, однако оно не обновляется в тексте.

Комментарии:

1. Из кода, которым вы поделились здесь, это кажется правильным — может быть, вы установили значение по умолчанию selectedCountry в своей функции сборки? Если возможно, пожалуйста, поделитесь своим виджетом целиком, чтобы его можно было лучше понять!

2. Я обнаружил, что у меня была условная сборка _buildPhoneNumberFormWidget(); моя ошибка.