Флаттер: изменение размера детей в SliverGrid
Я пытаюсь создать BottomSheet, где различные смайлики, изображения и картинки отображаются в виде сетки. Для этого я использую виджет CustomScrollView с SliverPadding и SliverGrid. Моя проблема в том, что я не могу отрегулировать размер изображений и картинок в сетке. Размер смайликов можно легко изменить с помощью свойства fontSize.
Вот мой код до сих пор:
CustomScrollView(
physics: NeverScrollableScrollPhysics(),
primary: false,
slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.only(top: 40.0),
sliver: SliverGrid.count(
crossAxisSpacing: 50.0,
crossAxisCount: 3,
children: <Widget>[
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "like");
Navigator.pop(context);
},
),
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "laugh");
Navigator.pop(context);
},
),
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "surprised");
Navigator.pop(context);
},
),
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "hot");
Navigator.pop(context);
},
),
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "thumbsUp");
Navigator.pop(context);
},
),
GestureDetector(
child: const Text('', textAlign: TextAlign.center, style: TextStyle(fontSize: 30.0)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "nice");
Navigator.pop(context);
},
),
GestureDetector(
child: SizedBox(
height: 20,
width: 20,
child: Image.asset('assets/kiss.gif', height: 20, width: 20, fit: BoxFit.fill)),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "nice");
Navigator.pop(context);
},
),
],
),
),
],
)
И вот как это выглядит на данный момент (рот поцелуя на самом деле движется):
Как вы можете видеть, поцелуй слишком велик, но я не могу отрегулировать его размер. С высотой и шириной или упаковкой в SizedBox ничего не получалось.
Есть идеи?
С наилучшими пожеланиями.
1 ответ
Я решил это, обернув детей в Центр виджетов:
GestureDetector(
child: Center(
child: Container(
height: 50,
width: 50,
child: Image.asset('assets/kiss.gif')),
onTap: (){
postLike(widget.list[widget.index].reference, widget.currentUser, "kiss");
Navigator.pop(context);
},
),