initial
This commit is contained in:
58
lib/utils/placeholders.dart
Normal file
58
lib/utils/placeholders.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
|
||||
// TODO: improve
|
||||
class SliverBodyPlaceholder extends HookConsumerWidget {
|
||||
const SliverBodyPlaceholder(this.children, {super.key});
|
||||
|
||||
final List<Widget> children;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
return SliverFillRemaining(
|
||||
hasScrollBody: false,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: children,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class SliverLoadingBodyPlaceholder extends HookConsumerWidget {
|
||||
const SliverLoadingBodyPlaceholder({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
return const SliverFillRemaining(
|
||||
hasScrollBody: false,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [CircularProgressIndicator()],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class SliverErrorBodyPlaceholder extends HookConsumerWidget {
|
||||
const SliverErrorBodyPlaceholder(this.msg, {super.key, this.icon});
|
||||
|
||||
final String msg;
|
||||
final IconData? icon;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
return SliverFillRemaining(
|
||||
hasScrollBody: false,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Icon(icon ?? Icons.error),
|
||||
const Gap(16),
|
||||
Text(msg),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user