#flutter
#flutter
Вопрос:
Я знаю, как правильно выравнивать виджеты со стеком, но я закончил использовать Stack, потому что иногда это доставляет мне много головной боли, когда все становится слишком беспорядочным. Я хотел бы спросить, есть ли способ складывать виджеты без использования стека?Это похоже на Transform.translate может сделать то же самое, но есть ли более надежный способ сделать это?
Container(
height: 70.0,
width: 70.0,
decoration: BoxDecoration(
gradient: bgDarkColorGradient,
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
offset: Offset(0, 12),
blurRadius: 24.0,
spreadRadius: 0.0,
color: Color.fromARGB(0, 0, 0, 130),
),
],
),
child: Stack(
children: [
Positioned(
child: Align(
alignment: Alignment.center,
child: Icon(
Icons.person_outline_outlined,
color: Colors.white,
),
),
),
Positioned(
top: 35,
right: 0,
child: Align(
alignment: Alignment.bottomRight,
child: Container(
height: 32.0,
width: 32.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white,
border: Border.all(
width: 4.0,
color: Color.fromARGB(255, 77, 93, 144),
),
),
child: Icon(Icons.edit, size: 12.0),
),
),
),
],
),
),
С помощью этого кода я почти добился этого результата.
Наконец, мой вопрос заключается в том, есть ли способ получить такие результаты без использования стека?
Комментарии:
1. Может быть, лучший вопрос в том, почему это вызывает у вас головную боль?
2. @Syph иногда мне приходится использовать разные стеки вместе, и трудно отследить, какой из них принадлежит правильному родителю. Поэтому я хочу свести к минимуму использование стека в своих приложениях.
3. Чувствую, что вам не следует уклоняться от виджета стека из-за этого, но да, не уверен, какие другие варианты хороши, если не использовать CustomMultiChildLayout.
4. Я согласен с @Syph. Один из вариантов для вас, чтобы хорошо отслеживать ваши виджеты со стеком, — это создавать их в разных файлах. Например, если вам нужно сложить 2 контейнера и 2 столбца, а затем сложить эти четыре виджета, вы можете создать отдельный виджет со стеком для этих 2 контейнеров, другой для 2 столбцов, а затем сложить их на нужном экране.