// 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 [ExpansionTileController]. void main() { runApp(const ExpansionTileControllerApp()); } class ExpansionTileControllerApp extends StatefulWidget { const ExpansionTileControllerApp({super.key}); @override State<ExpansionTileControllerApp> createState() => _ExpansionTileControllerAppState(); } class _ExpansionTileControllerAppState extends State<ExpansionTileControllerApp> { final ExpansionTileController controller = ExpansionTileController(); @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData(useMaterial3: true), home: Scaffold( appBar: AppBar(title: const Text('ExpansionTileController Sample')), body: Column( children: <Widget>[ // A controller has been provided to the ExpansionTile because it's // going to be accessed from a component that is not within the // tile's BuildContext. ExpansionTile( controller: controller, title: const Text('ExpansionTile with explicit controller.'), children: <Widget>[ Container( alignment: Alignment.center, padding: const EdgeInsets.all(24), child: const Text('ExpansionTile Contents'), ), ], ), const SizedBox(height: 8), ElevatedButton( child: const Text('Expand/Collapse the Tile Above'), onPressed: () { if (controller.isExpanded) { controller.collapse(); } else { controller.expand(); } }, ), const SizedBox(height: 48), // A controller has not been provided to the ExpansionTile because // the automatically created one can be retrieved via the tile's BuildContext. ExpansionTile( title: const Text('ExpansionTile with implicit controller.'), children: <Widget>[ Builder( builder: (BuildContext context) { return Container( padding: const EdgeInsets.all(24), alignment: Alignment.center, child: ElevatedButton( child: const Text('Collapse This Tile'), onPressed: () { return ExpansionTileController.of(context).collapse(); }, ), ); }, ), ], ), ], ), ), ); } }