content: import 'package:fl_clash/common/common.dart';
  import 'package:fl_clash/fragments/config/network.dart';
  import 'package:fl_clash/providers/config.dart';
  import 'package:fl_clash/widgets/widgets.dart';
  import 'package:flutter/material.dart';
  import 'package:flutter_riverpod/flutter_riverpod.dart';
  
  class TUNButton extends StatelessWidget {
    const TUNButton({super.key});
  
    @override
    Widget build(BuildContext context) {
      return SizedBox(
        height: getWidgetHeight(1),
        child: CommonCard(
          onPressed: () {
            showSheet(
              context: context,
              builder: (_, type) {
                return AdaptiveSheetScaffold(
                  type: type,
                  body: generateListView(
                    generateSection(
                      items: [
                        if (system.isDesktop) const TUNItem(),
                        const TunStackItem(),
                      ],
                    ),
                  ),
                  title: appLocalizations.tun,
                );
              },
            );
          },
          info: Info(
            label: appLocalizations.tun,
            iconData: Icons.stacked_line_chart,
          ),
          child: Container(
            padding: baseInfoEdgeInsets.copyWith(
              top: 4,
              bottom: 8,
              right: 8,
            ),
            child: Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Flexible(
                  flex: 1,
                  child: TooltipText(
                    text: Text(
                      appLocalizations.options,
                      maxLines: 1,
                      overflow: TextOverflow.ellipsis,
                      style: Theme.of(context)
                          .textTheme
                          .titleSmall
                          ?.adjustSize(-2)
                          .toLight,
                    ),
                  ),
                ),
                Consumer(
                  builder: (_, ref, __) {
                    final enable = ref.watch(patchClashConfigProvider
                        .select((state) => state.tun.enable));
                    return Switch(
                      value: enable,
                      onChanged: (value) {
                        ref.read(patchClashConfigProvider.notifier).updateState(
                              (state) => state.copyWith.tun(
                                enable: value,
                              ),
                            );
                      },
                    );
                  },
                )
              ],
            ),
          ),
        ),
      );
    }
  }
  
  class SystemProxyButton extends StatelessWidget {
    const SystemProxyButton({super.key});
  
    @override
    Widget build(BuildContext context) {
      return SizedBox(
        height: getWidgetHeight(1),
        child: CommonCard(
          onPressed: () {
            showSheet(
              context: context,
              builder: (_, type) {
                return AdaptiveSheetScaffold(
                  type: type,
                  body: generateListView(
                    generateSection(
                      items: [
                        SystemProxyItem(),
                        BypassDomainItem(),
                      ],
                    ),
                  ),
                  title: appLocalizations.systemProxy,
                );
              },
            );
          },
          info: Info(
            label: appLocalizations.systemProxy,
            iconData: Icons.shuffle,
          ),
          child: Container(
            padding: baseInfoEdgeInsets.copyWith(
              top: 4,
              bottom: 8,
              right: 8,
            ),
            child: Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Flexible(
                  flex: 1,
                  child: TooltipText(
                    text: Text(
                      appLocalizations.options,
                      maxLines: 1,
                      overflow: TextOverflow.ellipsis,
                      style: Theme.of(context)
                          .textTheme
                          .titleSmall
                          ?.adjustSize(-2)
                          .toLight,
                    ),
                  ),
                ),
                Consumer(
                  builder: (_, ref, __) {
                    final systemProxy = ref.watch(networkSettingProvider
                        .select((state) => state.systemProxy));
                    return Switch(
                      materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
                      value: systemProxy,
                      onChanged: (value) {
                        ref.read(networkSettingProvider.notifier).updateState(
                              (state) => state.copyWith(
                                systemProxy: value,
                              ),
                            );
                      },
                    );
                  },
                )
              ],
            ),
          ),
        ),
      );
    }
  }
  
  class VpnButton extends StatelessWidget {
    const VpnButton({super.key});
  
    @override
    Widget build(BuildContext context) {
      return SizedBox(
        height: getWidgetHeight(1),
        child: CommonCard(
          onPressed: () {
            showSheet(
              context: context,
              builder: (_, type) {
                return AdaptiveSheetScaffold(
                  type: type,
                  body: generateListView(
                    generateSection(
                      items: [
                        const VPNItem(),
                        const VpnSystemProxyItem(),
                        const TunStackItem(),
                      ],
                    ),
                  ),
                  title: "VPN",
                );
              },
            );
          },
          info: Info(
            label: "VPN",
            iconData: Icons.stacked_line_chart,
          ),
          child: Container(
            padding: baseInfoEdgeInsets.copyWith(
              top: 4,
              bottom: 8,
              right: 8,
            ),
            child: Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Flexible(
                  flex: 1,
                  child: TooltipText(
                    text: Text(
                      appLocalizations.options,
                      maxLines: 1,
                      overflow: TextOverflow.ellipsis,
                      style: Theme.of(context)
                          .textTheme
                          .titleSmall
                          ?.adjustSize(-2)
                          .toLight,
                    ),
                  ),
                ),
                Consumer(
                  builder: (_, ref, __) {
                    final enable = ref.watch(
                      vpnSettingProvider.select(
                        (state) => state.enable,
                      ),
                    );
                    return Switch(
                      value: enable,
                      onChanged: (value) {
                        ref.read(vpnSettingProvider.notifier).updateState(
                              (state) => state.copyWith(
                                enable: value,
                              ),
                            );
                      },
                    );
                  },
                )
              ],
            ),
          ),
        ),
      );
    }
  }
  