Как обновить состояние внутри addPostFrameCallback?

#flutter #dart

Вопрос:

Я пытаюсь проверить количество столбцов, которые виджет переноса создает на экране, я написал этот код:

 late double _charsWidth;  late int _numberOfColumns;   @override  void initState() {  //_scrollController.jumpTo(0);  _charsWidth = widget.characters.length * 100;  WidgetsBinding.instance?.addPostFrameCallback((_) {  final RenderBox renderBox =  _containerKey.currentContext?.findRenderObject() as RenderBox;  print('_charsWidth: $_charsWidth');  print('renderBox.size.width: ${renderBox.size.width}');  setState(() {  _numberOfColumns = (renderBox.size.width / _charsWidth).ceil();  });    super.initState();  print(_numberOfColumns); // error  });  

Но я получаю ошибку LateInitializationError: Field '_numberOfColumns@45197325' has not been initialized. с print(_numberOfColumns) .

Каков правильный способ обновления состояния здесь?

Ответ №1:

удалите ключевое слово late, избегайте использования ключевого слова late перед переменной с нулевым значением

 double? _charsWidth;  int? _numberOfColumns;