I’m using a widget for collecting user phone contact. The behavior I am expecting is that if there are values for phone numbers, it should be displayed in that widget. On init I’m retrieving the data that needs to be shown in that widget.
void onInit() async {
super.onInit();
getCountryFromCode(user?.countryCode ?? '+91');
_initialPhoneNumber(
user?.mobileNumber == "null" ? '' : user?.mobileNumber ?? '');
}
I’m using Obx to show these changes inside this widget. However, the value is received and the widget is not updating it. But when I change the page and come back the value is updating. The state only changes when I return to this page.
Here's how I tried to update the widget (I’m using intl_phone_field for phone field)
Widget mobileField(BuildContext context) {
final ProfileController _controller = Get.find();
return Obx(
() => Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(30),
color: Colors.white,
),
child: IntlPhoneField(
enabled: true,
decoration: const InputDecoration(
border: OutlineInputBorder(
borderSide: BorderSide(),
),
hintText: 'Mobile number',
counterText: "",
),
initialValue: _controller.initialPhoneNumber,
initialCountryCode: _controller.userCountryCode,
autoValidate: false,
showCountryFlag: false,
iconPosition: IconPosition.trailing,
onChanged: (phone) {
_controller.onSelectedPhoneNumber(phone);
},
onCountryChanged: (phone) {
_controller.onSelectedPhoneNumber(phone);
},
),
),
);
}
What is the proper way to display these changes? How can I solve this?