import 'package:flutter/material.dart';

import 'matrix.dart';

class SettingsSwitchListTile extends StatefulWidget {
  final bool defaultValue;
  final String storeKey;
  final String title;
  final Function(bool)? onChanged;

  const SettingsSwitchListTile.adaptive({
    Key? key,
    this.defaultValue = false,
    required this.storeKey,
    required this.title,
    this.onChanged,
  }) : super(key: key);

  @override
  SettingsSwitchListTileState createState() => SettingsSwitchListTileState();
}

class SettingsSwitchListTileState extends State<SettingsSwitchListTile> {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder<bool>(
      future: Matrix.of(context)
          .store
          .getItemBool(widget.storeKey, widget.defaultValue),
      builder: (context, snapshot) => SwitchListTile.adaptive(
        value: snapshot.data ?? widget.defaultValue,
        title: Text(widget.title),
        onChanged: (bool newValue) async {
          widget.onChanged?.call(newValue);
          await Matrix.of(context).store.setItemBool(widget.storeKey, newValue);
          setState(() {});
        },
      ),
    );
  }
}