Skip to content

Commit

Permalink
Fix DecoratedSliver sample code to reflect the description (#148621)
Browse files Browse the repository at this point in the history
### Demo screenshot

![Screenshot 2024-05-19 at 05 42 35](https://github.com/flutter/flutter/assets/104349824/6b4aec1f-32ab-496e-ab20-458c2051055d)

### Related issue

- Fixes flutter/flutter#145935
- Add test for `examples/api/test/widgets/sliver/decorated_sliver.0_test.dart` as a part of flutter/flutter#130459.
  • Loading branch information
huycozy authored May 23, 2024
1 parent abad372 commit e467289
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 10 deletions.
1 change: 0 additions & 1 deletion dev/bots/check_code_samples.dart
Original file line number Diff line number Diff line change
Expand Up @@ -376,7 +376,6 @@ final Set<String> _knownMissingTests = <String>{
'examples/api/test/widgets/framework/build_owner.0_test.dart',
'examples/api/test/widgets/framework/error_widget.0_test.dart',
'examples/api/test/widgets/inherited_theme/inherited_theme.0_test.dart',
'examples/api/test/widgets/sliver/decorated_sliver.0_test.dart',
'examples/api/test/widgets/autofill/autofill_group.0_test.dart',
'examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart',
'examples/api/test/widgets/scroll_position/scroll_metrics_notification.0_test.dart',
Expand Down
66 changes: 57 additions & 9 deletions examples/api/lib/widgets/sliver/decorated_sliver.0.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ class SliverDecorationExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
textTheme: const TextTheme(
titleLarge: TextStyle(
fontSize: 24,
color: Colors.white30,
),
),
),
home: Scaffold(
appBar: AppBar(title: const Text('SliverDecoration Sample')),
body: const SliverDecorationExample(),
Expand All @@ -28,6 +36,7 @@ class SliverDecorationExample extends StatelessWidget {
return CustomScrollView(
slivers: <Widget>[
DecoratedSliver(
key: const ValueKey<String>('radial-gradient'),
decoration: const BoxDecoration(
gradient: RadialGradient(
center: Alignment(-0.5, -0.6),
Expand All @@ -36,21 +45,60 @@ class SliverDecorationExample extends StatelessWidget {
Color(0xFFEEEEEE),
Color(0xFF111133),
],
stops: <double>[0.9, 1.0],
stops: <double>[0.4, 0.8],
),
),
sliver: SliverList(
delegate: SliverChildListDelegate(<Widget>[
const Text('Goodnight Moon'),
]),
delegate: SliverChildListDelegate(
<Widget>[
SizedBox(
height: 200.0,
child: Center(
child: Text(
'A moon on a night sky',
style: Theme.of(context).textTheme.titleLarge,
),
),
),
],
),
),
),
const DecoratedSliver(
decoration: BoxDecoration(
color: Colors.amber,
borderRadius: BorderRadius.all(Radius.circular(50))
DecoratedSliver(
key: const ValueKey<String>('linear-gradient'),
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
Color(0xFF111133),
Color(0xFF1A237E),
Color(0xFF283593),
Color(0xFF3949AB),
Color(0xFF3F51B5),
Color(0xFF1976D2),
Color(0xFF1E88E5),
Color(0xFF42A5F5),
],
),
),
sliver: SliverList(
delegate: SliverChildListDelegate(
<Widget>[
SizedBox(
height: 500.0,
child: Container(
alignment: Alignment.topCenter,
padding: const EdgeInsets.only(top: 56.0),
child: Text(
'A blue sky',
style: Theme.of(context).textTheme.titleLarge,
),
),
),
],
),
),
sliver: SliverToBoxAdapter(child: SizedBox(height: 300)),
),
],
);
Expand Down
74 changes: 74 additions & 0 deletions examples/api/test/widgets/sliver/decorated_sliver.0_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
// 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/material.dart';
import 'package:flutter_api_samples/widgets/sliver/decorated_sliver.0.dart' as example;
import 'package:flutter_test/flutter_test.dart';

void main() {
testWidgets('Verify the texts are displayed', (WidgetTester tester) async {
await tester.pumpWidget(
const example.SliverDecorationExampleApp(),
);

final Finder moonText = find.text('A moon on a night sky');
expect(moonText, findsOneWidget);

final Finder blueSkyText = find.text('A blue sky');
expect(blueSkyText, findsOneWidget);
});

testWidgets('Verify the sliver with key `radial-gradient` has a RadialGradient', (WidgetTester tester) async {
await tester.pumpWidget(
const example.SliverDecorationExampleApp(),
);

final DecoratedSliver radialDecoratedSliver = tester.widget<DecoratedSliver>(
find.byKey(const ValueKey<String>('radial-gradient')),
);
expect(
radialDecoratedSliver.decoration,
const BoxDecoration(
gradient: RadialGradient(
center: Alignment(-0.5, -0.6),
radius: 0.15,
colors: <Color>[
Color(0xFFEEEEEE),
Color(0xFF111133),
],
stops: <double>[0.4, 0.8],
),
),
);
});

testWidgets('Verify that the sliver with key `linear-gradient` has a LinearGradient', (WidgetTester tester) async {
await tester.pumpWidget(
const example.SliverDecorationExampleApp(),
);

final DecoratedSliver linearDecoratedSliver = tester.widget<DecoratedSliver>(
find.byKey(const ValueKey<String>('linear-gradient')),
);
expect(
linearDecoratedSliver.decoration,
const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: <Color>[
Color(0xFF111133),
Color(0xFF1A237E),
Color(0xFF283593),
Color(0xFF3949AB),
Color(0xFF3F51B5),
Color(0xFF1976D2),
Color(0xFF1E88E5),
Color(0xFF42A5F5),
],
),
),
);
});
}

0 comments on commit e467289

Please sign in to comment.