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-04-04 20:34:29 +00:00
2023-07-12 20:08:05 +00:00
2022-12-20 16:03:21 -08:00
2023-04-04 20:34:29 +00:00
2023-11-20 15:24:41 -08:00
2023-07-17 17:56:07 +00:00
2023-10-24 15:27:07 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-09-20 19:59:08 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-11-01 23:29:49 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-05-09 15:47:16 +00:00
2023-04-04 20:34:29 +00:00
2023-09-11 18:55:53 -05:00
2023-04-04 20:34:29 +00:00
2023-04-18 23:00:03 +00:00
2023-04-04 20:34:29 +00:00
2023-07-17 18:24:49 +00:00
2023-04-04 20:34:29 +00:00
2023-09-18 08:33:14 +00:00
2023-04-04 20:34:29 +00:00
2023-08-21 20:13:22 +00:00
2023-12-06 16:40:24 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-08-29 17:31:02 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-09-01 00:02:04 +00:00
2023-06-01 15:22:03 -07:00
2023-06-29 06:29:03 +00:00
2023-04-04 20:34:29 +00:00
2023-10-18 20:13:08 +00:00
2023-11-03 22:25:37 +00:00
2023-07-17 18:24:49 +00:00
2023-07-11 09:30:05 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-08-15 00:55:07 +00:00
2023-04-04 20:34:29 +00:00
2023-11-20 15:24:41 -08:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-07-11 20:04:17 +00:00
2023-05-05 16:39:11 +00:00
2023-11-03 22:25:37 +00:00
2023-09-08 09:40:49 +00:00
2023-07-12 20:08:05 +00:00
2023-04-04 20:34:29 +00:00
2023-06-21 19:32:04 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-07-12 20:08:05 +00:00
2023-04-04 20:34:29 +00:00
2023-11-07 10:26:23 -08:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-04-04 20:34:29 +00:00
2023-10-26 23:55:38 +00:00
2023-07-17 17:56:07 +00:00
2023-06-02 01:05:31 +00:00
2023-11-03 20:18:36 +00:00