iakdis / buhocms

A free and open source local CMS for static site generators
https://iakmds.github.io/buhocms
GNU General Public License v3.0
119 stars 7 forks source link

[BUG] Exception when opening page of existing Hugo website (`type '_OneByteString' is not a subtype of type 'YamlMap' in type cast`) #16

Closed fschrempf closed 1 year ago

fschrempf commented 1 year ago

Describe the bug I have an existing Hugo project and I can open it. But the application crashes when I open a certain page in the editor.

Trace

```console flutter: UPDATE WIDGET HERE flutter: Frontmatter widgets update! flutter: HERE: 10 flutter: UPDATE WIDGET HERE flutter: HERE: 10 flutter: UPDATE WIDGET HERE flutter: HERE: 10 flutter: type '_OneByteString' is not a subtype of type 'YamlMap' in type cast flutter: #0 FrontmatterWidgetState.initState (package:buhocms/src/ssg/frontmatter.dart:68) flutter: #1 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5101) flutter: #2 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #3 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #4 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6512) flutter: #5 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6524) flutter: #6 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #7 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6512) flutter: #8 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6524) flutter: #9 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #10 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #11 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6377) flutter: #12 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #13 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #14 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6377) flutter: #15 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #16 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #17 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #18 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #19 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #21 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #22 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #23 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6377) flutter: #24 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #25 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #26 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #27 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5133) flutter: #28 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #29 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #30 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5124) flutter: #31 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #32 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #33 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #34 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6377) flutter: #35 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #36 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #37 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6377) flutter: #38 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #39 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #40 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #41 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5133) flutter: #42 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #43 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #44 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5124) flutter: #45 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #46 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #47 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #48 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #49 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #50 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #51 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #52 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #53 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #54 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #55 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #56 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #57 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #58 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #59 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #60 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #61 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5133) flutter: #62 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #63 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #64 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5124) flutter: #65 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #66 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #67 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #68 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4993) flutter: #69 Element.rebuild (package:flutter/src/widgets/framework.dart:4690) flutter: #70 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4950) flutter: #71 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4944) flutter: #72 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3953) flutter: #73 Element.updateChild (package:flutter/src/widgets/framework.dart:3682) flutter: #74 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1451) flutter: #75 SliverMultiBoxAdaptorElement.createChild. (package:flutter/src/widgets/sliver.dart:1436) flutter: #76 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2682) flutter: #77 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1428) flutter: #78 RenderSliverMultiBoxAdaptor._createOrObtainChild. (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:353) flutter: #79 RenderObject.invokeLayoutCallback. (package:flutter/src/rendering/object.dart:2300) flutter: #80 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1056) flutter: #81 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2300) flutter: #82 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:342) flutter: #83 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:490) flutter: #84 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:241) flutter: #85 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:283) flutter: #86 RenderObject.layout (package:flutter/src/rendering/object.dart:2189) flutter: #87 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:149) flutter: #88 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:386) flutter: #89 RenderObject.layout (package:flutter/src/rendering/object.dart:2189) flutter: #90 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:550) flutter: #91 RenderShrinkWrappingViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1994) flutter: #92 RenderShrinkWrappingViewport.performLayout (package:flutter/src/rendering/viewport.dart:1939) flutter: #93 RenderObject.layout (package:flutter/src/rendering/object.dart:2189) flutter: #94 RenderBox.layout (package:flutter/src/rendering/box.dart:2430) flutter: #95 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120) flutter: #96 RenderObject.layout (package:flutter/src/rendering/object.dart:2189) flutter: #97 RenderBox.layout (package:flutter/src/rendering/box.dart:2430) flutter: #98 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:120) flutter: #99 RenderObject.layout (package:flutter/src/rendering/object.dart:2189) flutter: UPDATE WIDGET HERE flutter: HERE: 10 flutter: Another exception was thrown: Instance of 'DiagnosticsProperty' [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: LateInitializationError: Field 'frontmatter' has not been initialized. #0 StatefulElement.state (package:flutter/src/widgets/framework.dart) #1 GlobalKey.currentState (package:flutter/src/widgets/framework.dart:186) #2 UnsavedTextProvider.unsaved (package:buhocms/src/provider/editing/unsaved_text_provider.dart:44) #3 EditingPageState.checkUnsavedCustomFunction (package:buhocms/src/pages/editing_page.dart:231) #4 checkUnsavedBeforeFunction (package:buhocms/src/utils/unsaved_check.dart:10) #5 _FileButtonState._openInNewTab (package:buhocms/src/widgets/file_navigation/buttons/file_button.dart:156) #6 _FileButtonState._open (package:buhocms/src/widgets/file_navigation/buttons/file_button.dart:145) #7 _FileButtonState.navigationButton... (package:buhocms/src/widgets/file_navigation/buttons/file_button.dart:316) #8 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1096) #9 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:253) #10 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:627) #11 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:306) #12 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:276) #13 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:163) #14 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:464) #15 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:440) #16 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:336) #17 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:395) #18 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:357) #19 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:314) #20 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:295) #21 _invoke1 (dart:ui/hooks.dart:164) #22 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:361) #23 _dispatchPointerDataPacket (dart:ui/hooks.dart:91) ```

Expected behavior Application shouldn't crash.

Steps to reproduce the behavior:

  1. Open the problematic page in the editor
  2. Application stops responding
  3. Trace shown in console

Other information:

iakdis commented 1 year ago

Thank you for the issue.

It would help a lot if you could send that file (or the specific part of the file) so that I can reproduce the error

fschrempf commented 1 year ago

It would help a lot if you could send that file (or the specific part of the file) so that I can reproduce the error

The trigger for the issue is a multiline value in the frontmatter. In my case this is generated by Decap CMS.

---
index: false
draft: false
description: Incididunt consectetur aliquip ut ipsum aliquip qui ad. Excepteur
  magna est ut culpa reprehenderit amet nulla ipsum voluptate anim qui in
  veniam.
---
iakdis commented 1 year ago

This bug should now be fixed with the new release v0.6.2 :smile:

As always, let me know if everything is working now :+1:

iakdis commented 1 year ago

By the way, version 0.7.0 is out now. Let me know if we can close this issue :+1:

fschrempf commented 1 year ago

This bug should now be fixed with the new release v0.6.2

Thanks a lot! I have tested v0.6.2 and the issue is fixed there. There are other exceptions which I still need to investigate, though.