Skip to content
Kezdőlap » RenderFlex overflowed hiba – Expanded widget

RenderFlex overflowed hiba – Expanded widget

A RenderFlex overflowed hiba akkor jelentkezik, amikor a képernyőn valami nem fér el rendesen.

A VSCode-ban ezt az üzenetet kaphatjuk több helyen is:

RenderFlex overflowed

Ráadásként az app sem néz ki valami szépen:

overflowed

Ugyanaz a hiba jelenik meg az appon is fejlesztői üzemmódban a sárga-fekete csíkos téglalap mellett.

Mindez tehát azt jelenti, hogy némelyik tartalom nem fér a bőrébe, azaz nem fér el a rendelkezésre álló helyen a képernyőn. Magyarul kilóg.

Megoldás – Expanded widget

A konkrét hiba esetében van egy halom egymásba ágyazott Column– és Row widget is.

Column-Row

Úgy lehet megoldani a problémát, hogy refaktoráljuk a kódot és a Column widgetet körbevesszük egy Expanded widgettel.

Ehhez a VSCode-ban jobbklikk az adott Column widget-en jobb egérgombot nyomunk, majd a megjelenő panelen a Refactor…-t választjuk:

Refactor

Ezután pedig a Wrap with widget… lehetőséget:

 Wrap with widget...

A kódba azonnal be is került ez a burkoló (wrapper) widget:

return Row(
    children: [
      Text(((data['question_index'] as int) + 1).toString()),
      widget(
        child: Column(children: [

Ezt kell átírni Expanded-re:

return Row(
    children: [
      Text(((data['question_index'] as int) + 1).toString()),
      Expanded(
        child: Column(children: [

Most már a hiba eltűnt, ha egy frissítést nyomunk a VSCode-ban:

Expanded alkalmazásával

Az Expended nélkül a Column egy végtelen szélességű helyet foglalt el még akkor is, ha a maga a képernyő ezt bekorlátozná. A Column-t ez nem érdekli és a képernyő szélein túl akart terjeszkedni.

Az Expanded viszont azt csinálja, hogy csak annyi helyet foglal el, amennyit az ő szülője megenged, a vízszintes tengely mentén. Az Expanded szülője a Row widget. A Row widget maximális szélessége pedig egyenlő a képernyő szélességével. Ellenben a Column az Expanded nélkül ezt semmibe vette.

Az Expanded arra kényszeríti a child tulajdonságában levő widgetet, hogy csak akkora helyet foglaljon el, amennyi rendelkezésre áll.

Tags:

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük