@@ -10,6 +10,8 @@ import { indentString } from "../common/indentString";
1010import {
1111 getCrossAxisAlignment ,
1212 getMainAxisAlignment ,
13+ getWrapAlignment ,
14+ getWrapRunAlignment ,
1315} from "./builderImpl/flutterAutoLayout" ;
1416import { PluginSettings } from "types" ;
1517import { addWarning } from "../common/commonConversionWarnings" ;
@@ -193,12 +195,12 @@ const flutterFrame = (
193195 }
194196
195197 if ( node . layoutMode !== "NONE" ) {
196- const rowColumn = makeRowColumn ( node , children ) ;
197- return flutterContainer ( node , rowColumn ) ;
198+ const rowColumnWrap = makeRowColumnWrap ( node , children ) ;
199+ return flutterContainer ( node , rowColumnWrap ) ;
198200 } else {
199201 if ( node . inferredAutoLayout ) {
200- const rowColumn = makeRowColumn ( node . inferredAutoLayout , children ) ;
201- return flutterContainer ( node , rowColumn ) ;
202+ const rowColumnWrap = makeRowColumnWrap ( node . inferredAutoLayout , children ) ;
203+ return flutterContainer ( node , rowColumnWrap ) ;
202204 }
203205
204206 if ( node . isAsset ) {
@@ -215,21 +217,35 @@ const flutterFrame = (
215217 }
216218} ;
217219
218- const makeRowColumn = (
220+ const makeRowColumnWrap = (
219221 autoLayout : InferredAutoLayoutResult ,
220222 children : string ,
221223) : string => {
222- const rowOrColumn = autoLayout . layoutMode === "HORIZONTAL" ? "Row" : "Column" ;
223-
224- const widgetProps : Record < string , any > = {
225- mainAxisSize : "MainAxisSize.min" ,
226- // mainAxisSize: getFlex(node, autoLayout),
227- mainAxisAlignment : getMainAxisAlignment ( autoLayout ) ,
228- crossAxisAlignment : getCrossAxisAlignment ( autoLayout ) ,
229- } ;
224+ const rowOrColumn = autoLayout . layoutWrap == "WRAP" && autoLayout . primaryAxisSizingMode == "FIXED" ?
225+ "Wrap" : autoLayout . layoutMode === "HORIZONTAL" ? "Row" : "Column" ;
226+
227+ const widgetProps : Record < string , any > = autoLayout . layoutWrap == "WRAP"
228+ ? {
229+ alignment : getWrapAlignment ( autoLayout ) ,
230+ runAlignment : getWrapRunAlignment ( autoLayout ) ,
231+ } :
232+ {
233+ mainAxisSize : "MainAxisSize.min" ,
234+ // mainAxisSize: getFlex(node, autoLayout),
235+ mainAxisAlignment : getMainAxisAlignment ( autoLayout ) ,
236+ crossAxisAlignment : getCrossAxisAlignment ( autoLayout ) ,
237+
238+ } ;
230239
231240 // Add spacing parameter if itemSpacing is set
232- if ( autoLayout . itemSpacing > 0 ) {
241+ if ( autoLayout . layoutWrap == "WRAP" ) {
242+ if ( autoLayout . primaryAxisAlignItems != "SPACE_BETWEEN" && autoLayout . itemSpacing != undefined ) {
243+ widgetProps . spacing = autoLayout . itemSpacing ;
244+ }
245+ if ( autoLayout . counterAxisAlignContent != "SPACE_BETWEEN" && autoLayout . counterAxisSpacing != undefined ) {
246+ widgetProps . runSpacing = autoLayout . counterAxisSpacing ;
247+ }
248+ } else if ( autoLayout . itemSpacing > 0 ) {
233249 widgetProps . spacing = autoLayout . itemSpacing ;
234250 } else if ( autoLayout . itemSpacing < 0 ) {
235251 addWarning ( "Flutter doesn't support negative itemSpacing" ) ;
0 commit comments