Taha Tesser
f794cf9d97
Add AnimationStyle to ExpansionTile (#139664)
fixes [Expose animation parameters for the [ExpansionTile] widget](https://github.com/flutter/flutter/issues/138047)
### Description
Add `AnimationStyle` to the `ExpansionTile` widget to override the default expand and close animation.
Syntax:
```dart
child: ExpansionTile(
title: const Text('Tap to expand'),
expansionAnimationStyle: AnimationStyle(
duration: Durations.extralong1,
curve: Easing.emphasizedAccelerate,
),
children: const <Widget>[FlutterLogo(size: 200)],
),
```
### Code sample
<details>
<summary>expand to view the code sample</summary>
```dart
// 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';
/// Flutter code sample for [ExpansionTile] and [AnimationStyle].
void main() {
runApp(const ExpansionTileAnimationStyleApp());
}
enum AnimationStyles { defaultStyle, custom, none }
const List<(AnimationStyles, String)> animationStyleSegments = <(AnimationStyles, String)>[
(AnimationStyles.defaultStyle, 'Default'),
(AnimationStyles.custom, 'Custom'),
(AnimationStyles.none, 'None'),
];
class ExpansionTileAnimationStyleApp extends StatefulWidget {
const ExpansionTileAnimationStyleApp({super.key});
@override
State<ExpansionTileAnimationStyleApp> createState() => _ExpansionTileAnimationStyleAppState();
}
class _ExpansionTileAnimationStyleAppState extends State<ExpansionTileAnimationStyleApp> {
Set<AnimationStyles> _animationStyleSelection = <AnimationStyles>{AnimationStyles.defaultStyle};
AnimationStyle? _animationStyle;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SegmentedButton<AnimationStyles>(
selected: _animationStyleSelection,
onSelectionChanged: (Set<AnimationStyles> styles) {
setState(() {
_animationStyleSelection = styles;
switch (styles.first) {
case AnimationStyles.defaultStyle:
_animationStyle = null;
case AnimationStyles.custom:
_animationStyle = AnimationStyle(
curve: Easing.emphasizedAccelerate,
duration: Durations.extralong1,
);
case AnimationStyles.none:
_animationStyle = AnimationStyle.noAnimation;
}
});
},
segments: animationStyleSegments
.map<ButtonSegment<AnimationStyles>>(((AnimationStyles, String) shirt) {
return ButtonSegment<AnimationStyles>(value: shirt.$1, label: Text(shirt.$2));
})
.toList(),
),
const SizedBox(height: 20),
ExpansionTile(
expansionAnimationStyle: _animationStyle,
title: const Text('ExpansionTile'),
children: const <Widget>[
ListTile(title: Text('Expanded Item 1')),
ListTile(title: Text('Expanded Item 2')),
],
)
],
),
),
),
);
}
}
```
</details>
Related to https://github.com/flutter/flutter/pull/138721.
2023-12-06 16:40:24 +00:00
..
2023-09-11 09:42:27 -07:00
2023-10-12 14:17:56 +00:00
2023-10-24 22:35:05 +00:00
2023-08-31 10:19:13 -07:00
2023-08-14 10:05:20 -07:00
2023-08-31 10:19:13 -07:00
2023-08-22 15:50:48 +00:00
2023-08-14 10:05:20 -07:00
2023-11-20 15:24:41 -08:00
2023-08-31 10:19:13 -07:00
2023-08-22 15:50:48 +00:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-12-04 17:30:11 +00:00
2023-08-14 10:05:20 -07:00
2023-11-03 22:25:37 +00:00
2023-11-03 22:25:37 +00:00
2023-08-31 10:19:13 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-09-11 09:42:27 -07:00
2023-09-18 13:45:38 -07:00
2023-11-01 23:29:49 +00:00
2023-09-01 08:53:53 -07:00
2023-10-10 18:11:23 -07:00
2023-10-10 18:11:23 -07:00
2023-10-10 18:11:23 -07:00
2023-11-29 23:57:05 +00:00
2023-10-12 14:17:56 +00:00
2023-10-12 14:17:56 +00:00
2023-10-09 10:05:28 +00:00
2023-10-31 23:27:03 +00:00
2023-10-27 12:04:07 +03:00
2023-08-14 10:05:20 -07:00
2023-12-06 11:26:03 +00:00
2023-10-10 08:32:01 -07:00
2023-10-06 11:26:06 +00:00
2023-11-03 22:25:37 +00:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-11-14 17:55:05 +00:00
2023-09-05 13:45:12 -07:00
2023-09-01 08:53:53 -07:00
2023-09-01 08:53:53 -07:00
2023-09-05 13:45:12 -07:00
2023-09-29 18:15:53 +00:00
2023-09-05 13:45:12 -07:00
2023-10-10 10:05:51 -07:00
2023-12-05 01:39:29 +00:00
2023-10-18 20:13:08 +00:00
2023-10-10 10:05:51 -07:00
2023-11-29 07:05:42 +00:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-09-05 13:45:12 -07:00
2023-12-06 16:40:24 +00:00
2023-12-06 16:40:24 +00:00
2023-08-14 10:05:20 -07:00
2023-11-29 07:05:42 +00:00
2023-08-14 10:05:20 -07:00
2023-11-29 23:57:05 +00:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-10-11 07:19:30 +00:00
2023-09-11 09:42:27 -07:00
2023-09-11 09:42:27 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-10-09 09:10:23 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-11-28 17:59:19 +00:00
2023-11-17 18:50:33 +00:00
2023-10-10 18:11:23 -07:00
2023-11-29 23:57:05 +00:00
2023-10-23 14:37:43 -07:00
2023-11-28 05:20:07 +00:00
2023-08-14 10:05:20 -07:00
2023-09-11 09:42:27 -07:00
2023-08-17 23:36:11 +00:00
2023-09-05 13:45:12 -07:00
2023-10-10 18:11:23 -07:00
2023-08-14 10:05:20 -07:00
2023-09-21 10:06:21 -07:00
2023-11-03 12:34:16 -07:00
2023-10-23 15:45:46 +00:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-11-27 21:02:35 +00:00
2023-11-27 21:02:35 +00:00
2023-09-22 08:03:02 +00:00
2023-09-05 13:45:12 -07:00
2023-10-16 08:48:13 +00:00
2023-09-05 13:45:12 -07:00
2023-11-29 07:05:42 +00:00
2023-08-14 10:05:20 -07:00
2023-09-22 15:27:05 -07:00
2023-09-11 09:42:27 -07:00
2023-09-05 13:45:12 -07:00
2023-10-18 15:44:31 +00:00
2023-11-03 22:25:37 +00:00
2023-11-20 15:24:41 -08:00
2023-08-14 10:05:20 -07:00
2023-10-26 23:55:38 +00:00
2023-09-05 13:45:12 -07:00
2023-10-10 18:11:23 -07:00
2023-08-14 10:05:20 -07:00
2023-09-28 16:06:53 +00:00
2023-08-14 10:05:20 -07:00
2023-10-26 16:23:33 -07:00
2023-11-10 13:14:14 -08:00
2023-11-03 22:25:37 +00:00
2023-09-05 13:45:12 -07:00
2023-09-07 17:50:45 -07:00
2023-08-31 08:52:06 -07:00
2023-11-28 18:38:55 +00:00
2023-09-11 09:42:27 -07:00
2023-11-29 08:29:06 +00:00
2023-10-23 14:37:43 -07:00
2023-10-16 21:03:59 +00:00
2023-09-11 09:42:27 -07:00
2023-09-28 01:42:16 +00:00
2023-12-04 21:30:07 +00:00
2023-10-18 16:03:08 +00:00
2023-12-05 19:30:15 +00:00
2023-12-05 19:30:15 +00:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-09-05 13:41:10 -07:00
2023-11-07 10:26:23 -08:00
2023-11-07 10:26:23 -08:00
2023-11-07 10:26:23 -08:00
2023-10-26 23:55:38 +00:00
2023-09-22 15:27:05 -07:00
2023-09-07 17:50:45 -07:00
2023-10-26 23:55:38 +00:00
2023-11-29 07:05:42 +00:00
2023-08-14 10:05:20 -07:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-09-11 09:42:27 -07:00
2023-09-05 13:45:12 -07:00
2023-12-04 21:49:48 +00:00
2023-09-11 09:42:27 -07:00
2023-10-26 00:26:20 +00:00
2023-09-05 13:45:12 -07:00
2023-09-05 13:45:12 -07:00
2023-09-11 09:42:27 -07:00
2023-08-28 22:27:39 +00:00
2023-11-07 10:26:23 -08:00
2023-09-05 13:45:12 -07:00
2023-11-29 21:03:32 +00:00
2023-10-10 11:05:26 -07:00
2023-10-23 14:37:43 -07:00
2023-09-11 09:42:27 -07:00
2023-08-14 10:05:20 -07:00
2023-08-14 10:05:20 -07:00
2023-12-06 13:01:26 +00:00
2023-12-06 13:01:26 +00:00
2023-08-14 10:05:20 -07:00
2023-11-29 21:03:32 +00:00
2023-08-14 10:05:20 -07:00
2023-10-10 18:11:23 -07:00
2023-09-05 13:45:12 -07:00