Flutter Swiper: Как отобразить несколько виджетов на одной странице при выравнивании влево?

#flutter #dart #flutter-layout #flutter-dependencies

Вопрос:

Я использую swiper и хочу, чтобы на экране отображалось полтора виджета карты с первой картой, выровненной слева. Однако первая карта всегда выравнивается по центру, как показано на рисунке. Есть ли способ решить эту проблему?

введите описание изображения здесь

Код для свайпера приведен ниже:

   @override
  _EventSwiperState createState() => _EventSwiperState();
}

class _EventSwiperState extends State<EventSwiper> {
  @override
  Widget build(BuildContext context) {
    var width = MediaQuery.of(context).size.width;
    var height = MediaQuery.of(context).size.height;
    Color starColor = Colors.orange;
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Padding(
          padding: const EdgeInsets.all(18.0),
          child: Text('Upcoming Events',style: TextStyle(fontSize: 21,
              color:Colors.white,
              fontWeight: FontWeight.bold,
              fontFamily: 'Nunito'),),
        ),
        Container(
          height: height * 0.33,
          width: width,
          child: Swiper(
            // itemWidth: width*0.6,
            itemBuilder: (BuildContext context, int index) {
              return EventCard(events[index]);
            },
            // itemHeight: height / 4.2,
            itemCount: events.length,
            layout: SwiperLayout.DEFAULT,
            index: 0,
            viewportFraction: 0.8,
            scale: 1.1,
            loop: false,
            itemWidth: width*0.9,
            control: SwiperControl(iconNext: null, iconPrevious: null),
          ),
        ),
      ],
    );
  }
 

Код для индивидуальной карты приведен ниже:

 class EventCard extends StatefulWidget {
  final Event events;
  const EventCard(this.events);

  @override
  _EventCardState createState() => _EventCardState();
}

class _EventCardState extends State<EventCard> {
  @override
  Widget build(BuildContext context) {
    var width = MediaQuery.of(context).size.width;
    var height = MediaQuery.of(context).size.height;
    return Container(
      margin: EdgeInsets.symmetric(horizontal: width / 24,),
      decoration: BoxDecoration(
        borderRadius: BorderRadius.all(Radius.circular(10)),
        color: Color(0xff282828),
      ),
      child: Text(widget.events.emoji)
);  }
}

 

Комментарии:

1. pub.dev/пакеты/scroll_snap_list