feat: add placeholder for empty list

This commit is contained in:
Rongjian Zhang 2019-02-10 12:16:52 +08:00
parent 2da8475e8b
commit 5298c8736f
7 changed files with 32 additions and 10 deletions

View File

@ -189,7 +189,7 @@ class _SettingsProviderState extends State<SettingsProvider> {
// activeLogin = null;
// ready = true;
});
});
}, 100);
}
// http timeout

View File

@ -4,6 +4,7 @@ import 'package:flutter/widgets.dart';
import '../providers/settings.dart';
import '../widgets/error_reload.dart';
import '../widgets/loading.dart';
import '../widgets/empty.dart';
class ListPayload<T, K> {
K cursor;
@ -132,6 +133,8 @@ class _ListScaffoldState<T, K> extends State<ListScaffold<T, K>> {
);
} else if (loading) {
return SliverToBoxAdapter(child: Loading(more: false));
} else if (items.isEmpty) {
return SliverToBoxAdapter(child: EmptyWidget());
} else {
return SliverList(
delegate: SliverChildBuilderDelegate(
@ -147,6 +150,8 @@ class _ListScaffoldState<T, K> extends State<ListScaffold<T, K>> {
return ErrorReload(text: error, reload: _refresh);
} else if (loading) {
return Loading(more: false);
} else if (items.isEmpty) {
return EmptyWidget();
} else {
return ListView.builder(
controller: _controller,

View File

@ -6,6 +6,7 @@ import '../providers/settings.dart';
import '../widgets/notification_item.dart';
import '../widgets/list_group.dart';
import '../widgets/link.dart';
import '../widgets/empty.dart';
import '../utils/utils.dart';
String getRepoKey(NotificationGroup group) {
@ -249,10 +250,12 @@ $key: pullRequest(number: ${item.number}) {
loading: loading,
error: error,
bodyBuilder: () {
return Column(
children: groupMap.entries
.map((entry) => _buildGroupItem(context, entry))
.toList());
return groupMap.isEmpty
? EmptyWidget()
: Column(
children: groupMap.entries
.map((entry) => _buildGroupItem(context, entry))
.toList());
},
);
}

View File

@ -1 +0,0 @@
export 'package:github/server.dart';

View File

@ -3,7 +3,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import '../providers/settings.dart';
import '../screens/repo.dart';
export 'github.dart';
export 'package:github/server.dart';
export 'octicons.dart';
export 'timeago.dart';
@ -14,9 +14,9 @@ Color convertColor(String cssHex) {
return Color(int.parse('ff' + cssHex, radix: 16));
}
void nextTick(Function callback) {
void nextTick(Function callback, [int milliseconds = 0]) {
// FIXME:
Future.delayed(Duration(milliseconds: 100)).then((_) {
Future.delayed(Duration(milliseconds: 0)).then((_) {
callback();
});
}

11
lib/widgets/empty.dart Normal file
View File

@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
class EmptyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 50),
child: Center(child: Text('Empty', style: TextStyle(fontSize: 18))),
);
}
}

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import '../widgets/empty.dart';
class ListGroup<T> extends StatelessWidget {
final Widget title;
@ -30,7 +31,10 @@ class ListGroup<T> extends StatelessWidget {
color: Color(0x10000000),
child: title,
),
Column(children: items.asMap().entries.map(_buildItem).toList())
items.isEmpty
? EmptyWidget()
: Column(
children: items.asMap().entries.map(_buildItem).toList())
],
),
),