建立一个(design)_adapter.dart 里面class DesignListAdapter extends PullLoadWidget
class _DesignListAdapterState extends PullLoadWidgetState
@override itemView(DynamicListItem data) 这里写item布局

import 'package:flutter/material.dart';
class PullLoadWidget extends StatefulWidget {
@override
_PullLoadWidgetState createState() => _PullLoadWidgetState();
}
class _PullLoadWidgetState extends State<PullLoadWidget> {
int _i = 1;
ScrollController _scrollController;
@override
void initState() {
_scrollController = ScrollController();
_scrollController.addListener(() {
if (_scrollController.position.maxScrollExtent ==
_scrollController.position.maxScrollExtent) {
_i++;
setState(() {});
}
});
super.initState();
}
@override
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: _handleRefresh,
child: ListView.builder(
itemBuilder: (context, index) {
return _getItem(index);
},
itemCount: 20 * _i,
controller: _scrollController,
),
);
}
_getItem(int index) {
return Text('$index');
}
Future<void> _handleRefresh() async {
print('refresh');
}
}

import 'package:flutter/material.dart';
class PullLoadWidget extends StatefulWidget {
@override
_PullLoadWidgetState createState() => _PullLoadWidgetState();
}
class _PullLoadWidgetState extends State<PullLoadWidget> {
int _i = 1;
ScrollController _scrollController;
double _navAlpha = 0;
@override
void initState() {
_scrollController = ScrollController();
_scrollController.addListener(() {
double offset = _scrollController.offset;
if (offset == _scrollController.position.maxScrollExtent) {
_loadMore();
} else {
_changeHead(offset);
}
});
super.initState();
}
void _loadMore() {
_i++;
setState(() {});
}
_changeHead(double offset) {
if (offset < 0) {
if (_navAlpha != 0) {
_navAlpha = 0;
setState(() {});
}
} else if (offset < 50) {
_navAlpha = 1 - (50 - offset) / 50;
setState(() {});
} else if (_navAlpha != 1) {
_navAlpha = 1;
setState(() {});
}
}
@override
Widget build(BuildContext context) {
return Stack(
children: <Widget>[
_listView(),
_buildNavigationBar(),
],
);
}
_buildNavigationBar() {
return Opacity(
opacity: _navAlpha,
child: Container(
color: Colors.green,
width: 360,
child: Text("-----"),
),
);
}
_listView() {
return RefreshIndicator(
onRefresh: _handleRefresh,
child: ListView.builder(
itemBuilder: (context, index) {
return _getItem(index);
},
itemCount: 20 * _i,
controller: _scrollController,
),
);
}
_getItem(int index) {
if (index == 0) {
return Container(
color: Colors.white,
height: 200,
width: 360,
child: Text('100'),
);
}
return Text('$index');
}
Future<void> _handleRefresh() async {
print('refresh');
}
}