TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #10 359
Какой канал про Flutter без рубрики #пакет_недели, подумали мы, и вот первый выпуск!

Сегодня рассказываем про Skeletonizer. Этот пакет позволяет создавать скелетоны — упрощенные версии интерфейса, которые пользователь видит, пока контент загружается.

Главное про Skeletonizer:

🔸Он автоматически создает скелетоны. Пакет анализирует дерево виджетов и формирует анимацию загрузки, повторяя их форму, размеры и расположение.

🔸Он поддерживает кастомизацию. Skeletonizer позволяет настроить анимацию, цвет и форму скелетона.

🔸Его легко интегрировать. Можно просто обернуть виджет в Skeletonizer и сразу получить эффект анимации.

🔸Он поддерживает большинство стандартных виджетов. Например, Container, Text, или ListView.

Как использовать

Создадим анимацию загрузки для карточки профиля:
import 'package:flutter/material.dart';
import 'package:skeletonizer/skeletonizer.dart';

class ProfileSkeletonDemo extends StatelessWidget {
final bool isLoading = true;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Skeleton Profile Example')),
body: Center(
child: Skeletonizer(
enabled: isLoading,
child: Card(
child: ListTile(
leading: CircleAvatar(radius: 30),
title: Text('John Doe'),
subtitle: Text('Flutter Developer'),
),
),
),
),
);
}
}

void main() => runApp(MaterialApp(home: ProfileSkeletonDemo()));


По умолчанию Skeletonizer создает анимацию, похожую на движущийся светлый блик по заливке виджета. Но ее можно кастомизировать с помощью разных параметров:

backgroundColor: задает основной цвет скелетона.
highlightColor: задает цвет блика.
duration: продолжительность одного цикла анимации.
borderRadius: радиус закругления углов.

Например:
Skeletonizer(
enabled: true,
duration: Duration(seconds: 1), // Продолжительность анимации
backgroundColor: Colors.grey[200], // Цвет фона скелетона
highlightColor: Colors.grey[100], // Цвет анимированной заливки
child: YourWidget(),
);


Режим скелетона можно включать и выключать в зависимости от состояния загрузки данных:
Skeletonizer(
enabled: isLoading, // Условие включения скелетона
child: isLoading ? Placeholder() : ContentWidget(),
);


❗️Если виджетов много, Skeletonizer может привести к проблемам с производительностью, особенно на слабых устройствах.

🔥— попробуем красивые скелеты Skeletonizer
🙅— вставим из старых проектов
  • 🔥 6
  • 👍 3
  • 🤩 2
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →