无法读取 null 的 属性 'getPositionForOffset'
Cannot read property 'getPositionForOffset$1' of null
我的 flutter web 应用程序中有一个错误,在运行时更改应用程序本地化后很少出现,此动态行为使用 provider
和 flutter_localizations
打包为官方文档描述的 here 并更改 locale
和 darkTheme > fontFamily
属性 of MaterialApp
。
这是使用 flutter build web --profile --dart-define=Dart2jsOptimization=O0
的堆栈跟踪
Uncaught TypeError: Cannot read property 'getPositionForOffset' of null
at RenderParagraph.hitTestChildren$position (main.dart.js:96010)
at RenderParagraph.hitTest$position (main.dart.js:90914)
at RenderShiftedBox_hitTestChildren_closure.call (main.dart.js:98256)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90784)
at _RenderAppBarTitleBox.hitTestChildren$position (main.dart.js:98249)
at _RenderAppBarTitleBox.hitTest$position (main.dart.js:90914)
at RenderSemanticsAnnotations.hitTestChildren$position (main.dart.js:96532)
at RenderSemanticsAnnotations.hitTest$position (main.dart.js:90914)
at RenderBoxContainerDefaultsMixin_defaultHitTestChildren_closure.call (main.dart.js:91033)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90784)
或
Uncaught TypeError: Cannot read property 'getPositionForOffset' of null
at RenderParagraph.hitTestChildren$position (main.dart.js:96020)
at RenderParagraph.hitTest$position (main.dart.js:90924)
at RenderShiftedBox_hitTestChildren_closure.call (main.dart.js:98266)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90794)
at RenderPositionedBox.hitTestChildren$position (main.dart.js:98259)
at RenderPositionedBox.hitTest$position (main.dart.js:90924)
at RenderConstrainedBox.hitTestChildren$position (main.dart.js:96542)
at RenderConstrainedBox.hitTest$position (main.dart.js:90924)
at RenderExcludeSemantics.hitTestChildren$position (main.dart.js:96542)
at RenderExcludeSemantics.hitTest$position
如有任何帮助,我们将不胜感激
解决方案是在本地化更改请求后最顶层的小部件树将要重建时提供 UniqueKey()
到 MaterialApp()
,因为先前计算的状态或约束不一定与新的 fontFamily
或 locale
。另请注意,可能有另一个更有效的解决方案来解决此问题,但这将完成这项工作。
我的 flutter web 应用程序中有一个错误,在运行时更改应用程序本地化后很少出现,此动态行为使用 provider
和 flutter_localizations
打包为官方文档描述的 here 并更改 locale
和 darkTheme > fontFamily
属性 of MaterialApp
。
这是使用 flutter build web --profile --dart-define=Dart2jsOptimization=O0
Uncaught TypeError: Cannot read property 'getPositionForOffset' of null
at RenderParagraph.hitTestChildren$position (main.dart.js:96010)
at RenderParagraph.hitTest$position (main.dart.js:90914)
at RenderShiftedBox_hitTestChildren_closure.call (main.dart.js:98256)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90784)
at _RenderAppBarTitleBox.hitTestChildren$position (main.dart.js:98249)
at _RenderAppBarTitleBox.hitTest$position (main.dart.js:90914)
at RenderSemanticsAnnotations.hitTestChildren$position (main.dart.js:96532)
at RenderSemanticsAnnotations.hitTest$position (main.dart.js:90914)
at RenderBoxContainerDefaultsMixin_defaultHitTestChildren_closure.call (main.dart.js:91033)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90784)
或
Uncaught TypeError: Cannot read property 'getPositionForOffset' of null
at RenderParagraph.hitTestChildren$position (main.dart.js:96020)
at RenderParagraph.hitTest$position (main.dart.js:90924)
at RenderShiftedBox_hitTestChildren_closure.call (main.dart.js:98266)
at BoxHitTestResult.addWithPaintOffset$hitTest$offset$position (main.dart.js:90794)
at RenderPositionedBox.hitTestChildren$position (main.dart.js:98259)
at RenderPositionedBox.hitTest$position (main.dart.js:90924)
at RenderConstrainedBox.hitTestChildren$position (main.dart.js:96542)
at RenderConstrainedBox.hitTest$position (main.dart.js:90924)
at RenderExcludeSemantics.hitTestChildren$position (main.dart.js:96542)
at RenderExcludeSemantics.hitTest$position
如有任何帮助,我们将不胜感激
解决方案是在本地化更改请求后最顶层的小部件树将要重建时提供 UniqueKey()
到 MaterialApp()
,因为先前计算的状态或约束不一定与新的 fontFamily
或 locale
。另请注意,可能有另一个更有效的解决方案来解决此问题,但这将完成这项工作。