无法读取 null 的 属性 'getPositionForOffset'

Cannot read property 'getPositionForOffset$1' of null

我的 flutter web 应用程序中有一个错误,在运行时更改应用程序本地化后很少出现,此动态行为使用 providerflutter_localizations 打包为官方文档描述的 here 并更改 localedarkTheme > 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(),因为先前计算的状态或约束不一定与新的 fontFamilylocale。另请注意,可能有另一个更有效的解决方案来解决此问题,但这将完成这项工作。