Skip to content
This repository has been archived by the owner on Apr 5, 2023. It is now read-only.

Added null-safety #12

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## [3.0.0-dev.1]

* Added null-safety support

## [2.0.1]

* Changed implementation of ListView to ListView.builder
Expand Down
144 changes: 0 additions & 144 deletions flutter_platform_loadable/.idea/workspace.xml

This file was deleted.

7 changes: 3 additions & 4 deletions lib/src/blocked_loadable_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
15 changes: 7 additions & 8 deletions lib/src/loadable_item_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -45,7 +44,7 @@ class LoadableItemView extends StatelessWidget {
padding: padding,
color: backgroundColor ?? Colors.white,
child: Center(
child: errorWidget ?? const SizedBox(),
child: errorWidget,
),
);
}
Expand Down
42 changes: 20 additions & 22 deletions lib/src/loadable_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ import 'package:dash_kit_core/dash_kit_core.dart';

class LoadableListView<T extends StoreListItem> extends StatefulWidget {
const LoadableListView({
Key key,
@required this.viewModel,
Key? key,
required this.viewModel,
this.scrollPhysics = const AlwaysScrollableScrollPhysics(),
this.onChangeContentOffset,
this.cacheExtent,
}) : super(key: key);

final LoadableListViewModel<T> viewModel;
final ScrollPhysics scrollPhysics;
final void Function(double offset) onChangeContentOffset;
final double cacheExtent;
final void Function(double offset)? onChangeContentOffset;
final double? cacheExtent;

@override
State<StatefulWidget> createState() {
Expand All @@ -25,13 +25,14 @@ class LoadableListViewState<T extends StoreListItem>
extends State<LoadableListView> {
final ScrollController scrollController = ScrollController();

LoadableListViewModel<T> get viewModel => widget.viewModel;
LoadableListViewModel<T> get viewModel =>
widget.viewModel as LoadableListViewModel<T>;

@override
void initState() {
super.initState();
if (viewModel?.loadList != null && viewModel.loadListRequestState.isIdle) {
viewModel?.loadList();
if (viewModel.loadListRequestState.isIdle) {
viewModel.loadList?.call();
}

scrollController.addListener(() {
Expand Down Expand Up @@ -81,11 +82,11 @@ class LoadableListViewState<T extends StoreListItem>
}

Widget buildErrorState() {
return viewModel.errorWidget ?? Container();
return viewModel.errorWidget;
}

Widget buildEmptyState() {
return viewModel.emptyStateWidget ?? Container();
return viewModel.emptyStateWidget;
}

Widget getLoadingWidget() {
Expand All @@ -105,27 +106,24 @@ class LoadableListViewState<T extends StoreListItem>

class LoadableListViewModel<Item extends StoreListItem> {
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<Item> items;
final OperationState loadListRequestState;

Expand Down
40 changes: 21 additions & 19 deletions lib/src/loadable_paginated_list_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import 'package:dash_kit_loadable/src/loadable_list_view.dart';
class LoadablePaginatedListView<T extends StoreListItem>
extends LoadableListView<T> {
const LoadablePaginatedListView({
Key key,
@required LoadablePaginatedListViewModel<T> viewModel,
required LoadablePaginatedListViewModel<T> 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,
Expand All @@ -27,7 +27,8 @@ class LoadablePaginatedListView<T extends StoreListItem>
class LoadablePaginatedListState<T extends StoreListItem>
extends LoadableListViewState<T> {
@override
LoadablePaginatedListViewModel<T> get viewModel => widget.viewModel;
LoadablePaginatedListViewModel<T> get viewModel =>
widget.viewModel as LoadablePaginatedListViewModel<T>;

@override
void initState() {
Expand All @@ -41,7 +42,7 @@ class LoadablePaginatedListState<T extends StoreListItem>
if (scrollController.position.pixels ==
scrollController.position.maxScrollExtent &&
canLoad) {
viewModel?.loadPage();
viewModel.loadPage?.call();
}
});
}
Expand Down Expand Up @@ -70,7 +71,7 @@ class LoadablePaginatedListState<T extends StoreListItem>

Widget _getProgressPageWidget(ScrollController scrollController) {
WidgetsBinding.instance
.addPostFrameCallback((_) => scrollController.animateTo(
?.addPostFrameCallback((_) => scrollController.animateTo(
scrollController.position.maxScrollExtent,
duration: const Duration(milliseconds: 100),
curve: Curves.linear,
Expand All @@ -84,24 +85,24 @@ class LoadablePaginatedListState<T extends StoreListItem>
}

Widget _getErrorPageWidget() {
return viewModel.errorPageWidget ?? Container();
return viewModel.errorPageWidget;
}
}

class LoadablePaginatedListViewModel<Item extends StoreListItem>
extends LoadableListViewModel<Item> {
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,
Expand All @@ -110,9 +111,10 @@ class LoadablePaginatedListViewModel<Item extends StoreListItem>
emptyStateWidget: emptyStateWidget,
padding: padding,
key: key,
itemSeparator: itemSeparator,
);

final VoidCallback loadPage;
final VoidCallback? loadPage;
final PaginatedList<Item> paginatedList;
final Widget errorPageWidget;

Expand Down
Loading