搜索插件、代码仓与 APP 分类

skeleton_loader 封面
插件详情v2.0.0+4

skeleton_loader

一个 Flutter 包,为您的应用提供完全可自定义的加载骨架。

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
17
喜欢数
235
Pub 分数
140

安装插件

flutter pub add skeleton_loader

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,提供完全可定制的加载骨架,以在数据加载期间提升用户体验。它提供模拟最终内容布局的占位符动画,减少感知加载时间并提高应用响应速度。支持所有主要平台,非常适合创建流畅、专业外观的界面。该包轻量且易于集成,使开发者能够根据自己的设计系统自定义骨架的外观和行为。

适合场景

  • 加载列表或网格时使用占位符内容
  • 在数据到达之前显示卡片布局
  • 在异步操作期间提升感知性能
  • 在获取远程数据时创建一致的用户界面
  • 通过动态字段提升表单的用户体验

主要特点

  • 完全可自定义的骨架外观
  • 支持多种动画类型
  • 与现有小部件的轻松集成
  • 跨平台兼容性
  • 轻量且高效
  • 可配置的闪烁效果

适合对象

  • 开发人员在加载状态期间寻求改进的用户体验
  • 希望保持视觉一致性的设计师
  • 具有动态或网络依赖内容的应用程序
  • 需要精炼、可投入生产的占位符的项目
  • 使用 Material 或 Cupertino 设计系统的团队

使用建议

  • 可能需要额外的样式才能实现复杂的布局
  • 应在低端设备上测试动画性能
  • 不适合没有加载需求的静态内容
  • 除了基本的形状和颜色选项外,自定义功能有限
  • 最好与实际的加载指示器结合使用,以提高可访问性

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

skeleton_loader

A Flutter Package which provides a fully customizable loading skeleton for your app,

Installation

How to install it? Follow Instructions

Preview

Usage

import 'package:example/models/states.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

import 'screens/list.dart';
import 'screens/grid.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  final String appTitle = "Flutter Skeleton Loader Demo";
  final List<StateCapital> sc = [
    StateCapital(name: "Abia", capital: "Umuahia"),
    StateCapital(name: "Adamawa", capital: "Yola"),
    StateCapital(name: "Akwa-Ibom", capital: "Uyo"),
    StateCapital(name: "Anambra", capital: "Awka"),
    StateCapital(name: "Bauchi", capital: "Bauchi"),
    StateCapital(name: "Bayelsa", capital: "Yenagoa"),
    StateCapital(name: "Benue", capital: "Makurdi"),
    StateCapital(name: "Borno", capital: "Maiduguri"),
    StateCapital(name: "Cross River", capital: "Calabar"),
    StateCapital(name: "Delta", capital: "Asaba"),
    StateCapital(name: "Ebonyi", capital: "Abakaliki"),
    StateCapital(name: "Edo", capital: "Benin"),
    StateCapital(name: "Ekiti", capital: "Ado-Ekiti"),
    StateCapital(name: "Enugu", capital: "Enugu"),
    // StateCapital(name: "FCT", capital: "Abuja"),
    StateCapital(name: "Gombe", capital: "Gombe"),
    StateCapital(name: "Imo", capital: "Owerri"),
    StateCapital(name: "Jigawa", capital: "Dutse"),
    StateCapital(name: "Kaduna", capital: "Kaduna"),
    StateCapital(name: "Kano", capital: "Kano"),
    StateCapital(name: "Katsina", capital: "Katsina"),
    StateCapital(name: "Kebbi", capital: "Birnin-Kebbi"),
    StateCapital(name: "Kogi", capital: "Lokoja"),
    StateCapital(name: "Kwara", capital: "Ilorin"),
    StateCapital(name: "Lagos", capital: "Ikeja"),
    StateCapital(name: "Nassarawa", capital: "Lafia"),
    StateCapital(name: "Niger", capital: "Mina"),
    StateCapital(name: "Ogun", capital: "Abeokuta"),
    StateCapital(name: "Ondo", capital: "Akure"),
    StateCapital(name: "Osun", capital: "Osogbo"),
    StateCapital(name: "Oyo", capital: "Ibadan"),
    StateCapital(name: "Plateau", capital: "Jos"),
    StateCapital(name: "Rivers", capital: "Port Harcourt"),
    StateCapital(name: "Sokoto", capital: "Sokoto"),
    StateCapital(name: "Taraba", capital: "Jalingo"),
    StateCapital(name: "Yobe", capital: "Damaturu"),
    StateCapital(name: "Zamfara", capital: "Gusau"),
  ];
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: appTitle,
      theme: ThemeData(
        primarySwatch: Colors.blue,
        textTheme: GoogleFonts.openSansTextTheme(),
        primaryTextTheme: GoogleFonts.openSansTextTheme().copyWith(
          headline6: TextStyle(
            color: Colors.white,
          ),
        ),
      ),
      debugShowCheckedModeBanner: false,
      home: DefaultTabController(
        length: 2,
        initialIndex: 1,
        child: Scaffold(
          appBar: AppBar(
            title: Text("Flutter Skeleton Loader Demo"),
            bottom: TabBar(
              labelColor: Colors.white,
              tabs: <Widget>[
                Tab(
                  text: "List",
                ),
                Tab(
                  text: "Grid",
                ),
              ],
            ),
          ),
          body: TabBarView(
            children: <Widget>[
              ListExample(stateCapitals: sc),
              GridExample(stateCapitals: sc),
            ],
          ),
        ),
      ),
    );
  }
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目

暂无相关数据。