// 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: const MaterialStatePropertyAll<Color>(Colors.black), onChanged: (bool value) { // This is called when the user toggles the switch. setState(() { light = value; }); }, ); } }