From c58235eb64e2a6c698c9683b35ba499dd5889d78 Mon Sep 17 00:00:00 2001 From: Taha Tesser Date: Thu, 28 Apr 2022 10:14:12 +0300 Subject: [PATCH 1/2] `ReorderableListView`: fix broken dartpad example --- packages/flutter/lib/src/material/reorderable_list.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/material/reorderable_list.dart b/packages/flutter/lib/src/material/reorderable_list.dart index 16294cab14fce..91bb59f544b17 100644 --- a/packages/flutter/lib/src/material/reorderable_list.dart +++ b/packages/flutter/lib/src/material/reorderable_list.dart @@ -38,7 +38,7 @@ import 'theme.dart'; /// /// This example demonstrates using the [proxyDecorator] callback to customize /// the appearance of a list item while it's being dragged. -/// {@tool snippet} +/// {@tool dartpad} /// /// While a drag is underway, the widget returned by the [proxyDecorator] /// serves as a "proxy" (a substitute) for the item in the list. The proxy is From b83a5a9d714771a04a60c8d2918eaccb12cc36d7 Mon Sep 17 00:00:00 2001 From: Taha Tesser Date: Thu, 28 Apr 2022 10:50:28 +0300 Subject: [PATCH 2/2] Update examples --- .../reorderable_list_view.0.dart | 21 +++++------ .../reorderable_list_view.1.dart | 21 +++++------ ...ist_view.build_default_drag_handles.0.dart | 21 +++++------ ..._view.reorderable_list_view_builder.0.dart | 21 +++++------ .../reorderable_list_view.0_test.dart | 36 +++++++++++++++++++ .../reorderable_list_view.1_test.dart | 36 +++++++++++++++++++ ...iew.build_default_drag_handles.0_test.dart | 36 +++++++++++++++++++ ....reorderable_list_view_builder.0_test.dart | 36 +++++++++++++++++++ 8 files changed, 180 insertions(+), 48 deletions(-) create mode 100644 examples/api/test/reorderable_list/reorderable_list_view.0_test.dart create mode 100644 examples/api/test/reorderable_list/reorderable_list_view.1_test.dart create mode 100644 examples/api/test/reorderable_list/reorderable_list_view.build_default_drag_handles.0_test.dart create mode 100644 examples/api/test/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0_test.dart diff --git a/examples/api/lib/material/reorderable_list/reorderable_list_view.0.dart b/examples/api/lib/material/reorderable_list/reorderable_list_view.0.dart index 38605cf2685b6..d8b1ff7e60679 100644 --- a/examples/api/lib/material/reorderable_list/reorderable_list_view.0.dart +++ b/examples/api/lib/material/reorderable_list/reorderable_list_view.0.dart @@ -6,33 +6,30 @@ import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() => runApp(const ReorderableApp()); -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - static const String _title = 'Flutter Code Sample'; +class ReorderableApp extends StatelessWidget { + const ReorderableApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( - title: _title, home: Scaffold( - appBar: AppBar(title: const Text(_title)), - body: const MyStatefulWidget(), + appBar: AppBar(title: const Text('ReorderableListView Sample')), + body: const ReorderableExample(), ), ); } } -class MyStatefulWidget extends StatefulWidget { - const MyStatefulWidget({Key? key}) : super(key: key); +class ReorderableExample extends StatefulWidget { + const ReorderableExample({Key? key}) : super(key: key); @override - State createState() => _MyStatefulWidgetState(); + State createState() => _MyStatefulWidgetState(); } -class _MyStatefulWidgetState extends State { +class _MyStatefulWidgetState extends State { final List _items = List.generate(50, (int index) => index); @override diff --git a/examples/api/lib/material/reorderable_list/reorderable_list_view.1.dart b/examples/api/lib/material/reorderable_list/reorderable_list_view.1.dart index e1898b8220db5..35445b2773806 100644 --- a/examples/api/lib/material/reorderable_list/reorderable_list_view.1.dart +++ b/examples/api/lib/material/reorderable_list/reorderable_list_view.1.dart @@ -7,33 +7,30 @@ import 'dart:ui'; import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() => runApp(const ReorderableApp()); -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - static const String _title = 'Flutter Code Sample'; +class ReorderableApp extends StatelessWidget { + const ReorderableApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( - title: _title, home: Scaffold( - appBar: AppBar(title: const Text(_title)), - body: const MyStatefulWidget(), + appBar: AppBar(title: const Text('ReorderableListView Sample')), + body: const ReorderableExample(), ), ); } } -class MyStatefulWidget extends StatefulWidget { - const MyStatefulWidget({Key? key}) : super(key: key); +class ReorderableExample extends StatefulWidget { + const ReorderableExample({Key? key}) : super(key: key); @override - State createState() => _MyStatefulWidgetState(); + State createState() => _ReorderableExampleState(); } -class _MyStatefulWidgetState extends State { +class _ReorderableExampleState extends State { final List _items = List.generate(50, (int index) => index); @override diff --git a/examples/api/lib/material/reorderable_list/reorderable_list_view.build_default_drag_handles.0.dart b/examples/api/lib/material/reorderable_list/reorderable_list_view.build_default_drag_handles.0.dart index f28cfab9b93c8..6ff97788bf900 100644 --- a/examples/api/lib/material/reorderable_list/reorderable_list_view.build_default_drag_handles.0.dart +++ b/examples/api/lib/material/reorderable_list/reorderable_list_view.build_default_drag_handles.0.dart @@ -6,33 +6,30 @@ import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() => runApp(const ReorderableApp()); -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - static const String _title = 'Flutter Code Sample'; +class ReorderableApp extends StatelessWidget { + const ReorderableApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( - title: _title, home: Scaffold( - appBar: AppBar(title: const Text(_title)), - body: const MyStatefulWidget(), + appBar: AppBar(title: const Text('ReorderableListView Sample')), + body: const ReorderableExample(), ), ); } } -class MyStatefulWidget extends StatefulWidget { - const MyStatefulWidget({Key? key}) : super(key: key); +class ReorderableExample extends StatefulWidget { + const ReorderableExample({Key? key}) : super(key: key); @override - State createState() => _MyStatefulWidgetState(); + State createState() => _ReorderableExampleState(); } -class _MyStatefulWidgetState extends State { +class _ReorderableExampleState extends State { final List _items = List.generate(50, (int index) => index); @override diff --git a/examples/api/lib/material/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0.dart b/examples/api/lib/material/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0.dart index 6cd3bbfdda502..6de07e7053b83 100644 --- a/examples/api/lib/material/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0.dart +++ b/examples/api/lib/material/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0.dart @@ -6,35 +6,32 @@ import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() => runApp(const ReorderableApp()); -class MyApp extends StatelessWidget { - const MyApp({Key? key}) : super(key: key); - - static const String _title = 'Flutter Code Sample'; +class ReorderableApp extends StatelessWidget { + const ReorderableApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( - title: _title, home: Scaffold( - appBar: AppBar(title: const Text(_title)), + appBar: AppBar(title: const Text('ReorderableListView Sample')), body: const Center( - child: MyStatefulWidget(), + child: ReorderableExample(), ), ), ); } } -class MyStatefulWidget extends StatefulWidget { - const MyStatefulWidget({Key? key}) : super(key: key); +class ReorderableExample extends StatefulWidget { + const ReorderableExample({Key? key}) : super(key: key); @override - State createState() => _MyStatefulWidgetState(); + State createState() => _ReorderableExampleState(); } -class _MyStatefulWidgetState extends State { +class _ReorderableExampleState extends State { final List _items = List.generate(50, (int index) => index); @override diff --git a/examples/api/test/reorderable_list/reorderable_list_view.0_test.dart b/examples/api/test/reorderable_list/reorderable_list_view.0_test.dart new file mode 100644 index 0000000000000..a7c78157c12d9 --- /dev/null +++ b/examples/api/test/reorderable_list/reorderable_list_view.0_test.dart @@ -0,0 +1,36 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/reorderable_list/reorderable_list_view.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + Future longPressDrag(WidgetTester tester, Offset start, Offset end) async { + final TestGesture drag = await tester.startGesture(start); + await tester.pump(kLongPressTimeout + kPressTimeout); + await drag.moveTo(end); + await tester.pump(kPressTimeout); + await drag.up(); + } + + testWidgets('Reorder list item', (WidgetTester tester) async { + await tester.pumpWidget( + const MaterialApp( + home: example.ReorderableApp(), + ), + ); + + expect(tester.getCenter(find.text('Item 3')).dy, 252.0); + await longPressDrag( + tester, + tester.getCenter(find.text('Item 3')), + tester.getCenter(find.text('Item 2')), + ); + await tester.pumpAndSettle(); + expect(tester.getCenter(find.text('Item 3')).dy, 196.0); + }); +} diff --git a/examples/api/test/reorderable_list/reorderable_list_view.1_test.dart b/examples/api/test/reorderable_list/reorderable_list_view.1_test.dart new file mode 100644 index 0000000000000..c8c831f0e5df0 --- /dev/null +++ b/examples/api/test/reorderable_list/reorderable_list_view.1_test.dart @@ -0,0 +1,36 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/reorderable_list/reorderable_list_view.1.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + Future longPressDrag(WidgetTester tester, Offset start, Offset end) async { + final TestGesture drag = await tester.startGesture(start); + await tester.pump(kLongPressTimeout + kPressTimeout); + await drag.moveTo(end); + await tester.pump(kPressTimeout); + await drag.up(); + } + + testWidgets('Reorder list item', (WidgetTester tester) async { + await tester.pumpWidget( + const MaterialApp( + home: example.ReorderableApp(), + ), + ); + + expect(tester.getCenter(find.text('Item 3')).dy, 252.0); + await longPressDrag( + tester, + tester.getCenter(find.text('Item 3')), + tester.getCenter(find.text('Item 2')), + ); + await tester.pumpAndSettle(); + expect(tester.getCenter(find.text('Item 3')).dy, 196.0); + }); +} diff --git a/examples/api/test/reorderable_list/reorderable_list_view.build_default_drag_handles.0_test.dart b/examples/api/test/reorderable_list/reorderable_list_view.build_default_drag_handles.0_test.dart new file mode 100644 index 0000000000000..a95e4a8fced4b --- /dev/null +++ b/examples/api/test/reorderable_list/reorderable_list_view.build_default_drag_handles.0_test.dart @@ -0,0 +1,36 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/reorderable_list/reorderable_list_view.build_default_drag_handles.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + Future longPressDrag(WidgetTester tester, Offset start, Offset end) async { + final TestGesture drag = await tester.startGesture(start); + await tester.pump(kLongPressTimeout + kPressTimeout); + await drag.moveTo(end); + await tester.pump(kPressTimeout); + await drag.up(); + } + + testWidgets('Reorder list item', (WidgetTester tester) async { + await tester.pumpWidget( + const MaterialApp( + home: example.ReorderableApp(), + ), + ); + + expect(tester.getCenter(find.text('Item 3')).dy, 280.0); + await longPressDrag( + tester, + tester.getCenter(find.text('Item 3')), + tester.getCenter(find.text('Item 2')), + ); + await tester.pumpAndSettle(); + expect(tester.getCenter(find.text('Item 3')).dy, 216.0); + }); +} diff --git a/examples/api/test/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0_test.dart b/examples/api/test/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0_test.dart new file mode 100644 index 0000000000000..b678d076f1913 --- /dev/null +++ b/examples/api/test/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0_test.dart @@ -0,0 +1,36 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/material/reorderable_list/reorderable_list_view.reorderable_list_view_builder.0.dart' + as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + Future longPressDrag(WidgetTester tester, Offset start, Offset end) async { + final TestGesture drag = await tester.startGesture(start); + await tester.pump(kLongPressTimeout + kPressTimeout); + await drag.moveTo(end); + await tester.pump(kPressTimeout); + await drag.up(); + } + + testWidgets('Reorder list item', (WidgetTester tester) async { + await tester.pumpWidget( + const MaterialApp( + home: example.ReorderableApp(), + ), + ); + + expect(tester.getCenter(find.text('Item 3')).dy, 252.0); + await longPressDrag( + tester, + tester.getCenter(find.text('Item 3')), + tester.getCenter(find.text('Item 2')), + ); + await tester.pumpAndSettle(); + expect(tester.getCenter(find.text('Item 3')).dy, 196.0); + }); +}