diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3e75533..9333689 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## [3.0.0-dev.1]
+
+* Added null-safety support
+
## [2.0.1]
* Changed implementation of ListView to ListView.builder
diff --git a/flutter_platform_loadable/.idea/workspace.xml b/flutter_platform_loadable/.idea/workspace.xml
deleted file mode 100644
index 58734fe..0000000
--- a/flutter_platform_loadable/.idea/workspace.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1585926240624
-
-
- 1585926240624
-
-
- 1585928035207
-
-
-
- 1585928035207
-
-
- 1585928100211
-
-
-
- 1585928100211
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/lib/src/blocked_loadable_view.dart b/lib/src/blocked_loadable_view.dart
index 771caaa..e54f8c7 100644
--- a/lib/src/blocked_loadable_view.dart
+++ b/lib/src/blocked_loadable_view.dart
@@ -2,11 +2,10 @@ import 'package:flutter/material.dart';
class BlockedLoadableView extends StatelessWidget {
const BlockedLoadableView({
- @required this.child,
- @required this.isLoading,
+ required this.child,
+ required this.isLoading,
this.indicatorColor = Colors.white,
- }) : assert(child != null),
- assert(isLoading != null);
+ });
final Widget child;
final bool isLoading;
diff --git a/lib/src/loadable_item_view.dart b/lib/src/loadable_item_view.dart
index cc7ef24..097d04a 100644
--- a/lib/src/loadable_item_view.dart
+++ b/lib/src/loadable_item_view.dart
@@ -3,19 +3,18 @@ import 'package:dash_kit_core/dash_kit_core.dart';
class LoadableItemView extends StatelessWidget {
const LoadableItemView({
- @required this.child,
- @required this.requestState,
- @required this.errorWidget,
+ required this.child,
+ required this.requestState,
+ required this.errorWidget,
this.padding,
this.backgroundColor,
- }) : assert(child != null),
- assert(requestState != null);
+ });
final Widget child;
final Widget errorWidget;
final OperationState requestState;
- final EdgeInsetsGeometry padding;
- final Color backgroundColor;
+ final EdgeInsetsGeometry? padding;
+ final Color? backgroundColor;
@override
Widget build(BuildContext context) {
@@ -45,7 +44,7 @@ class LoadableItemView extends StatelessWidget {
padding: padding,
color: backgroundColor ?? Colors.white,
child: Center(
- child: errorWidget ?? const SizedBox(),
+ child: errorWidget,
),
);
}
diff --git a/lib/src/loadable_list_view.dart b/lib/src/loadable_list_view.dart
index d158552..b44da02 100644
--- a/lib/src/loadable_list_view.dart
+++ b/lib/src/loadable_list_view.dart
@@ -3,8 +3,8 @@ import 'package:dash_kit_core/dash_kit_core.dart';
class LoadableListView extends StatefulWidget {
const LoadableListView({
- Key key,
- @required this.viewModel,
+ Key? key,
+ required this.viewModel,
this.scrollPhysics = const AlwaysScrollableScrollPhysics(),
this.onChangeContentOffset,
this.cacheExtent,
@@ -12,8 +12,8 @@ class LoadableListView extends StatefulWidget {
final LoadableListViewModel viewModel;
final ScrollPhysics scrollPhysics;
- final void Function(double offset) onChangeContentOffset;
- final double cacheExtent;
+ final void Function(double offset)? onChangeContentOffset;
+ final double? cacheExtent;
@override
State createState() {
@@ -25,13 +25,14 @@ class LoadableListViewState
extends State {
final ScrollController scrollController = ScrollController();
- LoadableListViewModel get viewModel => widget.viewModel;
+ LoadableListViewModel get viewModel =>
+ widget.viewModel as LoadableListViewModel;
@override
void initState() {
super.initState();
- if (viewModel?.loadList != null && viewModel.loadListRequestState.isIdle) {
- viewModel?.loadList();
+ if (viewModel.loadListRequestState.isIdle) {
+ viewModel.loadList?.call();
}
scrollController.addListener(() {
@@ -81,11 +82,11 @@ class LoadableListViewState
}
Widget buildErrorState() {
- return viewModel.errorWidget ?? Container();
+ return viewModel.errorWidget;
}
Widget buildEmptyState() {
- return viewModel.emptyStateWidget ?? Container();
+ return viewModel.emptyStateWidget;
}
Widget getLoadingWidget() {
@@ -105,27 +106,24 @@ class LoadableListViewState
class LoadableListViewModel- {
const LoadableListViewModel({
- @required this.itemBuilder,
- @required this.itemSeparator,
- @required this.items,
- @required this.loadListRequestState,
- @required this.errorWidget,
- @required this.emptyStateWidget,
+ required this.itemBuilder,
+ required this.items,
+ required this.loadListRequestState,
+ required this.errorWidget,
+ required this.emptyStateWidget,
+ required this.itemSeparator,
this.key,
this.loadList,
this.padding,
- }) : assert(items != null),
- assert(itemBuilder != null),
- assert(itemSeparator != null),
- assert(loadListRequestState != null);
+ });
- final Key key;
+ final Key? key;
final Widget errorWidget;
final Widget emptyStateWidget;
final Widget Function(int) itemBuilder;
final Widget Function(int) itemSeparator;
- final VoidCallback loadList;
- final EdgeInsets padding;
+ final VoidCallback? loadList;
+ final EdgeInsets? padding;
final StoreList
- items;
final OperationState loadListRequestState;
diff --git a/lib/src/loadable_paginated_list_view.dart b/lib/src/loadable_paginated_list_view.dart
index fec9f32..6ffa39d 100644
--- a/lib/src/loadable_paginated_list_view.dart
+++ b/lib/src/loadable_paginated_list_view.dart
@@ -5,11 +5,11 @@ import 'package:dash_kit_loadable/src/loadable_list_view.dart';
class LoadablePaginatedListView
extends LoadableListView {
const LoadablePaginatedListView({
- Key key,
- @required LoadablePaginatedListViewModel viewModel,
+ required LoadablePaginatedListViewModel viewModel,
+ Key? key,
ScrollPhysics scrollPhysics = const AlwaysScrollableScrollPhysics(),
- double cacheExtent,
- void Function(double offset) onChangeContentOffset,
+ double? cacheExtent,
+ void Function(double offset)? onChangeContentOffset,
}) : super(
key: key,
viewModel: viewModel,
@@ -27,7 +27,8 @@ class LoadablePaginatedListView
class LoadablePaginatedListState
extends LoadableListViewState {
@override
- LoadablePaginatedListViewModel get viewModel => widget.viewModel;
+ LoadablePaginatedListViewModel get viewModel =>
+ widget.viewModel as LoadablePaginatedListViewModel;
@override
void initState() {
@@ -41,7 +42,7 @@ class LoadablePaginatedListState
if (scrollController.position.pixels ==
scrollController.position.maxScrollExtent &&
canLoad) {
- viewModel?.loadPage();
+ viewModel.loadPage?.call();
}
});
}
@@ -70,7 +71,7 @@ class LoadablePaginatedListState
Widget _getProgressPageWidget(ScrollController scrollController) {
WidgetsBinding.instance
- .addPostFrameCallback((_) => scrollController.animateTo(
+ ?.addPostFrameCallback((_) => scrollController.animateTo(
scrollController.position.maxScrollExtent,
duration: const Duration(milliseconds: 100),
curve: Curves.linear,
@@ -84,24 +85,24 @@ class LoadablePaginatedListState
}
Widget _getErrorPageWidget() {
- return viewModel.errorPageWidget ?? Container();
+ return viewModel.errorPageWidget;
}
}
class LoadablePaginatedListViewModel
-
extends LoadableListViewModel
- {
LoadablePaginatedListViewModel({
- Key key,
- @required Widget errorWidget,
- @required Widget emptyStateWidget,
- @required Widget Function(int) itemBuilder,
- @required this.paginatedList,
- @required this.errorPageWidget,
- VoidCallback loadList,
- EdgeInsets padding,
+ Key? key,
+ required Widget errorWidget,
+ required Widget emptyStateWidget,
+ required Widget Function(int) itemBuilder,
+ required Widget Function(int) itemSeparator,
+ required this.paginatedList,
+ required this.errorPageWidget,
+ VoidCallback? loadList,
+ EdgeInsets? padding,
this.loadPage,
- }) : assert(paginatedList != null),
- super(
+ }) : super(
items: paginatedList.items,
loadListRequestState: paginatedList.loadListRequestState,
itemBuilder: itemBuilder,
@@ -110,9 +111,10 @@ class LoadablePaginatedListViewModel
-
emptyStateWidget: emptyStateWidget,
padding: padding,
key: key,
+ itemSeparator: itemSeparator,
);
- final VoidCallback loadPage;
+ final VoidCallback? loadPage;
final PaginatedList
- paginatedList;
final Widget errorPageWidget;
diff --git a/lib/src/loadable_view.dart b/lib/src/loadable_view.dart
index b8e92d4..47688b3 100644
--- a/lib/src/loadable_view.dart
+++ b/lib/src/loadable_view.dart
@@ -2,19 +2,18 @@ import 'package:flutter/material.dart';
class LoadableView extends StatelessWidget {
const LoadableView({
- @required this.child,
- @required this.isLoading,
+ required this.child,
+ required this.isLoading,
this.padding,
this.backgroundColor = Colors.white,
this.indicatorColor,
- }) : assert(child != null),
- assert(isLoading != null);
+ });
final Widget child;
final bool isLoading;
- final EdgeInsetsGeometry padding;
+ final EdgeInsetsGeometry? padding;
final Color backgroundColor;
- final Animation indicatorColor;
+ final Animation? indicatorColor;
@override
Widget build(BuildContext context) {
diff --git a/pubspec.yaml b/pubspec.yaml
index 1af137a..1c94f60 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,16 +1,16 @@
name: dash_kit_loadable
description: Widgets for displaying different request states without additional code.
-version: 2.0.1
+version: 3.0.0-dev.1
homepage: https://github.com/Dash-Kit/dash-kit-loadable
environment:
- sdk: ">=2.3.0 <3.0.0"
+ sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
- dash_kit_core: ^2.0.1
+ dash_kit_core: ^3.0.0-dev.2
dev_dependencies:
flutter_test: