import 'package:flutter/material.dart'; class SwitcherWidget extends StatefulWidget { SwitcherWidget({Key key}):super(key:key); @override SwitcherWidgetState createState() => SwitcherWidgetState(); } class SwitcherWidgetState extends State<SwitcherWidget> { bool isActive = false; @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Switch.adaptive( value: isActive, activeColor: Colors.blueAccent, onChanged: (bool currentStatus) { isActive = currentStatus; setState(() {}); }), ), ); } changeState() { isActive = !isActive; setState(() {}); } }
class MyHomePage extends StatefulWidget { MyHomePage({Key key}) : super(key: key); @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { final GlobalKey<SwitcherWidgetState> key = GlobalKey(); @override Widget build(BuildContext context) { return Scaffold( body: SwitcherWidget( key: key, ), floatingActionButton: FloatingActionButton( onPressed: () { key.currentState.changeState(); }, child: Text('切换'), ), // This trailing comma makes auto-formatting nicer for build methods. ); } }