| // 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. |
| |
| // Flutter code sample for Switch |
| |
| import 'package:flutter/material.dart'; |
| |
| void main() => runApp(const SwitchApp()); |
| |
| class SwitchApp extends StatelessWidget { |
| const SwitchApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| home: Scaffold( |
| appBar: AppBar(title: const Text('Switch Sample')), |
| body: const Center( |
| child: SwitchExample(), |
| ), |
| ), |
| ); |
| } |
| } |
| |
| class SwitchExample extends StatefulWidget { |
| const SwitchExample({super.key}); |
| |
| @override |
| State<SwitchExample> createState() => _SwitchExampleState(); |
| } |
| |
| class _SwitchExampleState extends State<SwitchExample> { |
| bool light = true; |
| |
| @override |
| Widget build(BuildContext context) { |
| final MaterialStateProperty<Color?> trackColor = MaterialStateProperty.resolveWith<Color?>( |
| (Set<MaterialState> states) { |
| // Track color when the switch is selected. |
| if (states.contains(MaterialState.selected)) { |
| return Colors.amber; |
| } |
| // Otherwise return null to set default track color |
| // for remaining states such as when the switch is |
| // hovered, focused, or disabled. |
| return null; |
| }, |
| ); |
| final MaterialStateProperty<Color?> overlayColor = MaterialStateProperty.resolveWith<Color?>( |
| (Set<MaterialState> states) { |
| // Material color when switch is selected. |
| if (states.contains(MaterialState.selected)) { |
| return Colors.amber.withOpacity(0.54); |
| } |
| // Material color when switch is disabled. |
| if (states.contains(MaterialState.disabled)) { |
| return Colors.grey.shade400; |
| } |
| // Otherwise return null to set default material color |
| // for remaining states such as when the switch is |
| // hovered, or focused. |
| return null; |
| }, |
| ); |
| |
| return Switch( |
| // This bool value toggles the switch. |
| value: light, |
| overlayColor: overlayColor, |
| trackColor: trackColor, |
| thumbColor: MaterialStateProperty.all<Color>(Colors.black), |
| onChanged: (bool value) { |
| // This is called when the user toggles the switch. |
| setState(() { |
| light = value; |
| }); |
| }, |
| ); |
| } |
| } |