Adds doc example for Listview and pageview (#36391)
This commit is contained in:
parent
50a483879f
commit
5ecda9e1b5
@ -562,6 +562,10 @@ class PageView extends StatefulWidget {
|
|||||||
///
|
///
|
||||||
/// [itemBuilder] will be called only with indices greater than or equal to
|
/// [itemBuilder] will be called only with indices greater than or equal to
|
||||||
/// zero and less than [itemCount].
|
/// zero and less than [itemCount].
|
||||||
|
///
|
||||||
|
/// [PageView.builder] by default does not support child reordering. If
|
||||||
|
/// you are planning to change child order at a later time, consider using
|
||||||
|
/// [PageView] or [PageView.custom].
|
||||||
PageView.builder({
|
PageView.builder({
|
||||||
Key key,
|
Key key,
|
||||||
this.scrollDirection = Axis.horizontal,
|
this.scrollDirection = Axis.horizontal,
|
||||||
@ -579,6 +583,84 @@ class PageView extends StatefulWidget {
|
|||||||
|
|
||||||
/// Creates a scrollable list that works page by page with a custom child
|
/// Creates a scrollable list that works page by page with a custom child
|
||||||
/// model.
|
/// model.
|
||||||
|
///
|
||||||
|
/// {@tool sample}
|
||||||
|
///
|
||||||
|
/// This [PageView] uses a custom [SliverChildBuilderDelegate] to support child
|
||||||
|
/// reordering.
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// class MyPageView extends StatefulWidget {
|
||||||
|
/// @override
|
||||||
|
/// _MyPageViewState createState() => _MyPageViewState();
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class _MyPageViewState extends State<MyPageView> {
|
||||||
|
/// List<String> items = <String>['1', '2', '3', '4', '5'];
|
||||||
|
///
|
||||||
|
/// void _reverse() {
|
||||||
|
/// setState(() {
|
||||||
|
/// items = items.reversed.toList();
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// Widget build(BuildContext context) {
|
||||||
|
/// return Scaffold(
|
||||||
|
/// body: SafeArea(
|
||||||
|
/// child: PageView.custom(
|
||||||
|
/// childrenDelegate: SliverChildBuilderDelegate(
|
||||||
|
/// (BuildContext context, int index) {
|
||||||
|
/// return KeepAlive(
|
||||||
|
/// data: items[index],
|
||||||
|
/// key: ValueKey<String>(items[index]),
|
||||||
|
/// );
|
||||||
|
/// },
|
||||||
|
/// childCount: items.length,
|
||||||
|
/// findChildIndexCallback: (Key key) {
|
||||||
|
/// final ValueKey valueKey = key;
|
||||||
|
/// final String data = valueKey.value;
|
||||||
|
/// return items.indexOf(data);
|
||||||
|
/// }
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// bottomNavigationBar: BottomAppBar(
|
||||||
|
/// child: Row(
|
||||||
|
/// mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
/// children: <Widget>[
|
||||||
|
/// FlatButton(
|
||||||
|
/// onPressed: () => _reverse(),
|
||||||
|
/// child: Text('Reverse items'),
|
||||||
|
/// ),
|
||||||
|
/// ],
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// );
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class KeepAlive extends StatefulWidget {
|
||||||
|
/// const KeepAlive({Key key, this.data}) : super(key: key);
|
||||||
|
///
|
||||||
|
/// final String data;
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// _KeepAliveState createState() => _KeepAliveState();
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class _KeepAliveState extends State<KeepAlive> with AutomaticKeepAliveClientMixin{
|
||||||
|
/// @override
|
||||||
|
/// bool get wantKeepAlive => true;
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// Widget build(BuildContext context) {
|
||||||
|
/// super.build(context);
|
||||||
|
/// return Text(widget.data);
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
/// {@end-tool}
|
||||||
PageView.custom({
|
PageView.custom({
|
||||||
Key key,
|
Key key,
|
||||||
this.scrollDirection = Axis.horizontal,
|
this.scrollDirection = Axis.horizontal,
|
||||||
|
@ -917,6 +917,10 @@ class ListView extends BoxScrollView {
|
|||||||
/// `addSemanticIndexes` argument corresponds to the
|
/// `addSemanticIndexes` argument corresponds to the
|
||||||
/// [SliverChildBuilderDelegate.addSemanticIndexes] property. None may be
|
/// [SliverChildBuilderDelegate.addSemanticIndexes] property. None may be
|
||||||
/// null.
|
/// null.
|
||||||
|
///
|
||||||
|
/// [ListView.builder] by default does not support child reordering. If
|
||||||
|
/// you are planning to change child order at a later time, consider using
|
||||||
|
/// [ListView] or [ListView.custom].
|
||||||
ListView.builder({
|
ListView.builder({
|
||||||
Key key,
|
Key key,
|
||||||
Axis scrollDirection = Axis.vertical,
|
Axis scrollDirection = Axis.vertical,
|
||||||
@ -1065,6 +1069,84 @@ class ListView extends BoxScrollView {
|
|||||||
///
|
///
|
||||||
/// For example, a custom child model can control the algorithm used to
|
/// For example, a custom child model can control the algorithm used to
|
||||||
/// estimate the size of children that are not actually visible.
|
/// estimate the size of children that are not actually visible.
|
||||||
|
///
|
||||||
|
/// {@tool sample}
|
||||||
|
///
|
||||||
|
/// This [ListView] uses a custom [SliverChildBuilderDelegate] to support child
|
||||||
|
/// reordering.
|
||||||
|
///
|
||||||
|
/// ```dart
|
||||||
|
/// class MyListView extends StatefulWidget {
|
||||||
|
/// @override
|
||||||
|
/// _MyListViewState createState() => _MyListViewState();
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class _MyListViewState extends State<MyListView> {
|
||||||
|
/// List<String> items = <String>['1', '2', '3', '4', '5'];
|
||||||
|
///
|
||||||
|
/// void _reverse() {
|
||||||
|
/// setState(() {
|
||||||
|
/// items = items.reversed.toList();
|
||||||
|
/// });
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// Widget build(BuildContext context) {
|
||||||
|
/// return Scaffold(
|
||||||
|
/// body: SafeArea(
|
||||||
|
/// child: ListView.custom(
|
||||||
|
/// childrenDelegate: SliverChildBuilderDelegate(
|
||||||
|
/// (BuildContext context, int index) {
|
||||||
|
/// return KeepAlive(
|
||||||
|
/// data: items[index],
|
||||||
|
/// key: ValueKey<String>(items[index]),
|
||||||
|
/// );
|
||||||
|
/// },
|
||||||
|
/// childCount: items.length,
|
||||||
|
/// findChildIndexCallback: (Key key) {
|
||||||
|
/// final ValueKey valueKey = key;
|
||||||
|
/// final String data = valueKey.value;
|
||||||
|
/// return items.indexOf(data);
|
||||||
|
/// }
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// bottomNavigationBar: BottomAppBar(
|
||||||
|
/// child: Row(
|
||||||
|
/// mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
/// children: <Widget>[
|
||||||
|
/// FlatButton(
|
||||||
|
/// onPressed: () => _reverse(),
|
||||||
|
/// child: Text('Reverse items'),
|
||||||
|
/// ),
|
||||||
|
/// ],
|
||||||
|
/// ),
|
||||||
|
/// ),
|
||||||
|
/// );
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class KeepAlive extends StatefulWidget {
|
||||||
|
/// const KeepAlive({Key key, this.data}) : super(key: key);
|
||||||
|
///
|
||||||
|
/// final String data;
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// _KeepAliveState createState() => _KeepAliveState();
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// class _KeepAliveState extends State<KeepAlive> with AutomaticKeepAliveClientMixin{
|
||||||
|
/// @override
|
||||||
|
/// bool get wantKeepAlive => true;
|
||||||
|
///
|
||||||
|
/// @override
|
||||||
|
/// Widget build(BuildContext context) {
|
||||||
|
/// super.build(context);
|
||||||
|
/// return Text(widget.data);
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
/// {@end-tool}
|
||||||
const ListView.custom({
|
const ListView.custom({
|
||||||
Key key,
|
Key key,
|
||||||
Axis scrollDirection = Axis.vertical,
|
Axis scrollDirection = Axis.vertical,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user