Я внедряю телефонное приложение для игры в UNO с использованием флаттера (и дротика), и я застрял в том, как мне отображать карты на доске. Это дерьмо, я бы хотел, чтобы мой код выглядел так: введите описание изображения здесь и вот как выглядит мой код: введите описание изображения здесь
import 'package:flutter/material.dart';
import 'card.dart';
class Partida extends StatefulWidget {
const Partida({ Key? key }) : super(key: key);
@override
State<Partida> createState() => _PartidaState();
}
class _PartidaState extends State<Partida> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color.fromARGB(255, 19, 107, 22),
body: Center(
child: Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
MyCard(),
MyCard(),
],
),
// MyCard(),
// Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// // MyCard(),
// MyCard(),
// ]
// ),
],
),
),
),
);
}
}
Заранее спасибо.
Для этого вы можете использовать виджет Stack()
. Начните с предоставления clipBehaviour:Clip.none
, который поможет переполнить карты, когда вы складываете их несколько.
Затем используйте виджет Positioned()
, чтобы сдвинуть их влево, используя свойство под названием left: 50
(или любое другое число). Это сдвинет карты влево.
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Stack(
clipBehavior: Clip.none,
alignment: AlignmentDirectional.bottomCenter,
children: const [
ColoredBox(
color: Colors.red,
child: SizedBox(
height: 100,
width: 80,
),
),
Positioned(
left: 50,
bottom: 0,
child: ColoredBox(
color: Colors.green,
child: SizedBox(
height: 100,
width: 80,
),
),
),
Positioned(
left: 100,
bottom: 0,
child: ColoredBox(
color: Colors.blue,
child: SizedBox(
height: 100,
width: 80,
),
),
),
Positioned(
left: 150,
bottom: 0,
child: ColoredBox(
color: Colors.yellow,
child: SizedBox(
height: 100,
width: 80,
),
),
),
],
);
}
}
Выход
Поэкспериментируйте с виджетом Align()
, попробуйте разные значения свойства alignment
.
Да, это сработало отлично, спасибо! И знаете, как я могу выровнять это по низу экрана?