Jak równomiernie rozprowadzić i zmienić rozmiar dwóch elementów z rzędu?

0

Pytanie

Staram się spaceevenly jeden Icon() i jeszczeAutoSizeText() w Row(). Kiedy suma jest duża, jak widać na załączonych zdjęciach, jest wyświetlany zgodnie z oczekiwaniami, ale gdy suma jest równa zero lub jest dość krótka, AutoSizeText() centruje, ale to prowadzi do tego, że nie jest już obsługiwany w tej samej odległości od krawędzi. Istnieje dodatkowy odstęp, spowodowane ustawieniami.. Nie wiem, jak to naprawić.

Edytować. Jeśli to nie było jasne, mam na myśli symbol różowej torby na zakupy i kwoty określonej w sekcji "Riepilogo Settimanale". Jeśli spojrzeć na ikonę restauracji i jego ilość, można zauważyć, że są one nie wyśrodkowania, są bliżej lewej krawędzi.

orginal view

enter image description here

Container(
      decoration: BoxDecoration(
        color: Colors.white,
        borderRadius: BorderRadius.circular(20),
      ),
      width: size.width * 0.3,
      height: size.height,
      // height: size.height * 0.055,
      child: Row(
        children: [
          Spacer(),
          Expanded(
            flex: 3,
            child: Container(
              child: LayoutBuilder(
                builder: (context, constraint) {
                  return Icon(
                    icona,
                    color: colore,
                    size: constraint.biggest.width * 1,
                  );
                },
              ),
            ),
          ),
          Spacer(),
          Expanded(
            flex: 6,
            child: Center(
              child: AutoSizeText(
                importo,
                style: TextStyle(
                  fontSize: 20,
                  fontWeight: FontWeight.bold,
                  color: colore,
                ),
                maxLines: 1,
              ),
            ),
          ),
          Spacer(),
        ],
      ),
    )
android dart flutter flutter-layout
2021-11-23 20:16:17
1

Najlepsza odpowiedź

1

Jeśli cię dobrze rozumiem, chcesz wyrównać tekst do prawej, a nie na środku.

Aby osiągnąć ten cel, należy rozważyć użycie jednego Spacer() między symbolem i tekstem. Średnica odstęp (marginesy i wcięcia) można wykonać za pomocą Padding zamiast widgetu.

2021-11-24 00:29:45

Najpierw chciałem, aby zachowanie było jak na przydzielenie miejsca w wierszu, chciałem, żeby między lewą krawędzią ikony miały taką samą przestrzeń, ikona, tekst, tekst-prawy brzeg. Jednak nie wiem, jak to osiągnąć, bo rozmiar tekstu zmienia się, jak tylko on się zmienia, dlatego separator powinien mieć możliwość zmiany rozmiaru odpowiednio. Postanowiłem, że lepiej po prostu wyrównać tekst do prawej, jak zaproponowano, nawet jeśli to nie to, co chciałem, ale wydaje się przyzwoitą
iocomxda

@iocomxda, temat, jeśli chcesz mieć taką samą przestrzeń w 3 przedziałach czasowych, można spróbować umieścić 3 Spacer() wzory do tego. Ale teksty (ma różną szerokość) nie będą pasować do siebie na stronie (na przykład, jeśli $2666 i $0), więc wyrównaj do prawej jest najbardziej powszechne podejście.
user1032613

Dziękuję za miłą wyjaśnienie! Nie wiedziałem, że wyrównaj do prawej-najbardziej powszechne podejście.
iocomxda

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................