GitHub 儲存庫jushutch/swiping_card_deck

swiping_card_deck

一個用於透過手勢或按鈕滑動瀏覽卡牌堆的元件。

swiping_card_deck 專案封面
星標
13
分支
12
最近推送(UTC)
2023年9月9日
專案狀態
未封存

原始 README

以下為英文專案原文快照,最新內容請造訪 GitHub。

swiping_card_deck

Flutter Tests Test Coverage Bugs

A widget for swiping through a deck of cards with gestures or buttons.

This package was inspired when I was trying to develop a Tinder-like app that involved swiping options to the left or right. I assumed that a package existed for such a popular functionality, but I searched the internet and could only find bits and pieces of different implementations that were confusing, complicated, and down right bad. This package aims to be an easy-to-use and customizable way to implement that functionality, and will hopefully save you a great amount of time!

SwipingCardDeck Demonstration

Features

The SwipingCardDeck widget offers a variety of unique features:

  • Swipe through cards by dragging or using buttons to hook into the public swipeLeft and swipeRight functions.
  • Provide custom callback functions for when the deck is empty and for each swiping direction, which also pass in the original Card object.
  • Use custom Cards of any shape, size, or content.
  • Optimized performance by rendering top two cards at a time, allowing for large decks with no decrease in user experience.
  • A variety of exposed properties allow for a swiping experience that can be designed for any need.
  • Great for any Tinder-like decision making application.

To create a deck of any widget, use the generic SwipingDeck class with templating!

What this package doesn't support:

  • Vertical swiping

Usage

Constructing a SwipingCardDeck with two cards and two buttons that can be used for swiping. Callback functions print out debugging information. The parameters minimumVelocity, rotationFactor, swipeThreshold, and swipeAnimationDuration are all optional, but are set to the default values which work well for most use cases. The disableDragging parameter is set to false by default, but can be set to true in order to prevent cards from being swiped using the dragging gesture.

SwipingCardDeck(
    cardDeck: <Card>[
        Card(
            color: Colors.red,
            child: const SizedBox(height: 300, width: 200,)
        ),
        Card(
            color: Colors.green,
            child: const SizedBox(height: 300, width: 200,)
        ),
    ],
    onDeckEmpty: () => debugPrint("Card deck empty"),
    onLeftSwipe: (Card card) => debugPrint("Swiped left!"),
    onRightSwipe: (Card card) => debugPrint("Swiped right!"),
    swipeThreshold: MediaQuery.of(context).size.width / 4,
    minimumVelocity: 1000,
    cardWidth: 200,
    rotationFactor: 0.8 / 3.14,
    swipeAnimationDuration: const Duration(milliseconds: 500),
    disableDragging: false,
);

Additional information

Issues and suggestions

This package is being actively maintained and developed. To submit ideas, issues, or suggestions, create an issue in the GitHub repository.

Contributing

Thank you for your interest in contributing! To get started, read through the documentation in CONTRIBUTING. There are always new issues coming so be sure to check back often, and if there's something you want to work on but there's no issue, just open one yourself!

Justin Hutchins GitHub avatar
GitHub 作者

Justin Hutchins ↗

University of Michigan, Ann Arbor - Computer Science B.S. 2022

語言Dart

分類

此儲存庫發佈的套件

使用的依賴

依賴清單 3 項

  • flutter{"sdk":"flutter"}
  • flutter_test開發依賴{"sdk":"flutter"}
  • flutter_lints開發依賴>=1.0.0 <3.0.0

如何選擇適合專案的儲存庫?

先依使用情境篩選,再比較專案活躍情況,最後到原始儲存庫確認使用要求。

  1. 透過儲存庫名稱、作者或描述搜尋,再依技術分類縮小範圍。
  2. 綜合星標、分支與最近推送比較專案;星標反映社群關注,不保證品質。
  3. 使用前在 GitHub 確認 README、授權條款與 Issues。

來源與維護

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗