serenay_ecommerce_widgets 1.1.5 copy "serenay_ecommerce_widgets: ^1.1.5" to clipboard
serenay_ecommerce_widgets: ^1.1.5 copied to clipboard

A backend-driven widget system for e-commerce screens. Renders TEXT, IMAGE, CAROUSEL, GRID, PRODUCTCARD, FLASHSALE and more from JSON, with nav/data/cart injected by the host app.

serenay_ecommerce_widgets #

๐Ÿš€ Live demo ยท ๐Ÿ“– Docs

A dynamic widget system that renders e-commerce home/category screens from a backend-driven JSON payload. For the full widget catalog โ€” one usage doc per widget type, with JSON schemas and examples โ€” see doc/widgets/.

Installation #

dependencies:
  serenay_ecommerce_widgets: ^1.1.5

Quick start #

The package is backend-agnostic: navigation, data fetching, and auth/cart state are all injected from the host app through WidgetCallbacks.

final callbacks = WidgetCallbacks(
  onAction: (action) {
    // Navigate based on action.type (category, product, collection, ...).
  },
  fetchProducts: (query) => myApi.fetchProducts(query),
  fetchSlides: (id) => myApi.fetchSlides(id),
  isLoggedIn: () => myAuth.isLoggedIn,
  onToggleFavorite: (product) => myApi.toggleFavorite(product.id),
  onAddToCart: (product, variant, qty) => myCart.add(product, variant, qty),
);

final screenJson = await myApi.fetchScreen(); // { "data": [ ... ] }
final data = WidgetCatalog.fromJson(screenJson);

ListView(children: WidgetCatalog.getScreen(data: data, callbacks: callbacks));

Only onAction and fetchProducts are required on WidgetCallbacks; callbacks for widget types you don't use (fetchVideos, fetchModal, visitedProducts, ...) can be left unset โ€” the corresponding widget just hides itself when no data comes back, it never crashes.

See example/lib/main.dart for a complete working example: a mock JSON payload and mock callbacks driving a demo screen with every catalog widget.

Theming #

By default every widget uses the package's built-in colors and text styles. To re-brand the catalog for your app, pass an EcommerceWidgetTheme to getScreen:

final theme = EcommerceWidgetTheme(
  primaryColor: const Color(0xFF7B2CBF),
  secondaryColor: const Color(0xFFFF9F1C),
  discountColor: const Color(0xFFE63946),
  productTitleStyle: const TextStyle(fontWeight: FontWeight.w700),
);

WidgetCatalog.getScreen(data: data, callbacks: callbacks, theme: theme);

Any field you don't set falls back to the package default โ€” see EcommerceWidgetTheme for the full list of overridable colors, text styles and sizes.

The standalone building blocks the catalog composes internally โ€” AddToCartButton, FavoriteButton, DiscountBadge, QuantityPicker, RichProductCard โ€” are also exported, so you can use them directly outside WidgetCatalog (e.g. in a custom product detail screen) with their own constructor overrides.

Supported widgets #

TEXT, IMAGE, SLIDER, DIVIDER, CAROUSEL, GRID, IMAGECAROUSEL, IMAGELIST, VIDEOLIST, FASTREGISTER, STORY, VISITEDPRODUCTS, TIMEIMAGE, YOUTUBE, SEARCH, PRODUCTCARD, FLASHSALE, MODAL, MIXEDCAROUSEL. An unrecognized type renders as an empty 1px box (forward compatibility).

GRID has its own card design (taller image, inline video, a pre-order banner, a size/package picker); CAROUSEL, PRODUCTCARD and FLASHSALE share the same card.

For the params schema each widget expects, see doc/widgets/ โ€” one page per widget type.

2
likes
0
points
494
downloads

Publisher

verified publisherserenay.net.tr

Weekly Downloads

A backend-driven widget system for e-commerce screens. Renders TEXT, IMAGE, CAROUSEL, GRID, PRODUCTCARD, FLASHSALE and more from JSON, with nav/data/cart injected by the host app.

Repository (GitHub)
View/report issues

Topics

#widget #ecommerce #ui

License

unknown (license)

Dependencies

cupertino_icons, flutter, url_launcher, video_player, youtube_player_flutter

More

Packages that depend on serenay_ecommerce_widgets