You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.1 KiB
Dart
63 lines
2.1 KiB
Dart
4 years ago
|
import 'package:diplomaticquarterapp/core/model/packages_offers/requests/OffersCategoriesRequestModel.dart';
|
||
|
import 'package:diplomaticquarterapp/core/service/packages_offers/PackagesOffersServices.dart';
|
||
|
import 'package:diplomaticquarterapp/locator.dart';
|
||
|
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||
|
import 'package:flutter/cupertino.dart';
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:shimmer/shimmer.dart';
|
||
|
|
||
|
class ShimmerLoadingWidget extends StatefulWidget {
|
||
|
Future<void> Function() onPreProccess;
|
||
|
Widget Function() loadingWidget;
|
||
|
Widget Function() realWidget;
|
||
|
Function() onFinish;
|
||
|
ShimmerLoadingWidget({this.onPreProccess, this.loadingWidget, this.realWidget, this.onFinish});
|
||
|
|
||
|
void loadWidget() {}
|
||
|
|
||
|
@override
|
||
|
State<StatefulWidget> createState() => _ShimmerLoadingWidgetState();
|
||
|
}
|
||
|
|
||
|
class _ShimmerLoadingWidgetState extends State<ShimmerLoadingWidget> {
|
||
|
var service = locator<OffersAndPackagesServices>();
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
Stream<bool> preProccess = (() async* {
|
||
|
await super.widget.onPreProccess();
|
||
|
})();
|
||
|
|
||
|
// TODO: implement build
|
||
|
return StreamBuilder(
|
||
|
stream: preProccess,
|
||
|
builder: (context, snapshot) {
|
||
|
Widget widget;
|
||
|
if (snapshot.hasError) {
|
||
|
widget = Texts(
|
||
|
"Error happened",
|
||
|
color: Colors.red,
|
||
|
fontSize: 20,
|
||
|
bold: true,
|
||
|
);
|
||
|
} else {
|
||
|
switch (snapshot.connectionState) {
|
||
|
case ConnectionState.none:
|
||
|
break;
|
||
|
case ConnectionState.active:
|
||
|
break;
|
||
|
case ConnectionState.waiting:
|
||
|
widget = Shimmer.fromColors(child: super.widget.loadingWidget(), baseColor: Colors.red, highlightColor: Colors.yellow);
|
||
|
break;
|
||
|
case ConnectionState.done:
|
||
|
widget = super.widget.realWidget();
|
||
|
if (super.widget.onFinish != null) super.widget.onFinish();
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return widget;
|
||
|
});
|
||
|
}
|
||
|
}
|