feat: add scrollbar

This commit is contained in:
Rongjian Zhang 2019-09-28 21:40:42 +08:00
parent ddf7f73d36
commit 5089ac6bb0
4 changed files with 37 additions and 28 deletions

View File

@ -175,11 +175,12 @@ class _ListStatefulScaffoldState<T, K>
} else if (items.isEmpty) {
return EmptyWidget();
} else {
return ListView.builder(
// shrinkWrap: true,
controller: _controller,
itemCount: 2 * items.length + 1,
itemBuilder: _buildItem,
return Scrollbar(
child: ListView.builder(
controller: _controller,
itemCount: 2 * items.length + 1,
itemBuilder: _buildItem,
),
);
}
}
@ -187,12 +188,14 @@ class _ListStatefulScaffoldState<T, K>
Widget _buildBody() {
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return CustomScrollView(
controller: _controller,
slivers: [
CupertinoSliverRefreshControl(onRefresh: _refresh),
_buildCupertinoSliver(),
],
return CupertinoScrollbar(
child: CustomScrollView(
controller: _controller,
slivers: [
CupertinoSliverRefreshControl(onRefresh: _refresh),
_buildCupertinoSliver(),
],
),
);
default:
return RefreshIndicator(

View File

@ -199,18 +199,12 @@ class _LongListScaffoldState<T, K> extends State<LongListScaffold<T, K>> {
payload == null ? null : widget.trailingBuilder(payload.header),
),
child: SafeArea(
child: CustomScrollView(slivers: slivers),
child: CupertinoScrollbar(
child: CustomScrollView(slivers: slivers),
),
),
);
default:
List<Widget> slivers = [];
if (payload != null) {
slivers.add(
SliverToBoxAdapter(child: widget.headerBuilder(payload.header)),
);
}
slivers.add(_buildSliver());
return Scaffold(
appBar: AppBar(
title: widget.title,
@ -220,7 +214,14 @@ class _LongListScaffoldState<T, K> extends State<LongListScaffold<T, K>> {
),
body: RefreshIndicator(
onRefresh: _refresh,
child: CustomScrollView(slivers: slivers),
child: Scrollbar(
child: CustomScrollView(slivers: [
if (payload != null)
SliverToBoxAdapter(
child: widget.headerBuilder(payload.header)),
_buildSliver(),
]),
),
),
);
}

View File

@ -16,7 +16,7 @@ class SingleScaffold extends StatelessWidget {
Widget build(BuildContext context) {
return CommonScaffold(
title: title,
body: SingleChildScrollView(child: body),
body: Scrollbar(child: SingleChildScrollView(child: body)),
trailing: trailing,
);
}

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:git_touch/widgets/loading.dart';
import 'package:primer/primer.dart';
import 'package:provider/provider.dart';
class CommonScaffold extends StatelessWidget {
@ -55,16 +56,20 @@ class RefreshWrapper extends StatelessWidget {
Widget build(BuildContext context) {
switch (Provider.of<ThemeModel>(context).theme) {
case AppThemeType.cupertino:
return CustomScrollView(
slivers: <Widget>[
CupertinoSliverRefreshControl(onRefresh: onRefresh),
SliverToBoxAdapter(child: body),
],
return CupertinoScrollbar(
child: CustomScrollView(
slivers: <Widget>[
CupertinoSliverRefreshControl(onRefresh: onRefresh),
SliverToBoxAdapter(child: body),
],
),
);
default:
return RefreshIndicator(
onRefresh: onRefresh,
child: SingleChildScrollView(child: body),
child: Scrollbar(
child: SingleChildScrollView(child: body),
),
);
}
}