import 'package:flutter/cupertino.dart'; void main() => runApp(const CupertinoFormRowApp()); class CupertinoFormRowApp extends StatelessWidget { const CupertinoFormRowApp({super.key}); @override Widget build(BuildContext context) { return const CupertinoApp( theme: CupertinoThemeData(brightness: Brightness.light), home: CupertinoFormRowExample(), ); } } class CupertinoFormRowExample extends StatefulWidget { const CupertinoFormRowExample({super.key}); @override State<CupertinoFormRowExample> createState() => _CupertinoFormRowExampleState(); } class _CupertinoFormRowExampleState extends State<CupertinoFormRowExample> { bool airplaneMode = false; @override Widget build(BuildContext context) { return CupertinoPageScaffold( navigationBar: const CupertinoNavigationBar( middle: Text('CupertinoFormSection Sample'), ), // Add safe area widget to place the CupertinoFormSection below the navigation bar. child: SafeArea( child: CupertinoFormSection( header: const Text('Connectivity'), children: <Widget>[ GestureDetector( behavior: HitTestBehavior.translucent, onTap: () { setState(() { airplaneMode = !airplaneMode; }); print("CupertinoFormRow tapped"); }, child: CupertinoFormRow( prefix: const PrefixWidget( icon: CupertinoIcons.airplane, title: 'Airplane Mode', color: CupertinoColors.systemOrange, ), child: CupertinoSwitch( value: airplaneMode, onChanged: (bool value) { setState(() { airplaneMode = value; }); }, ), ), ), ], ), ), ); } } class PrefixWidget extends StatelessWidget { const PrefixWidget({ super.key, required this.icon, required this.title, required this.color, }); final IconData icon; final String title; final Color color; @override Widget build(BuildContext context) { return Row( children: <Widget>[ Container( padding: const EdgeInsets.all(4.0), decoration: BoxDecoration( color: color, borderRadius: BorderRadius.circular(4.0), ), child: Icon(icon, color: CupertinoColors.white), ), const SizedBox(width: 15), Text(title) ], ); } }
Flutter 无法获取整行可单击的Cupertino FormRow
27 min read