Skip to content

Instantly share code, notes, and snippets.

@TekExplorer
Last active November 8, 2023 20:00
Show Gist options
  • Select an option

  • Save TekExplorer/81ed12b18b1bd6cddcfd9b9b346e8ec3 to your computer and use it in GitHub Desktop.

Select an option

Save TekExplorer/81ed12b18b1bd6cddcfd9b9b346e8ec3 to your computer and use it in GitHub Desktop.
Synced text field and switch
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark().copyWith(
scaffoldBackgroundColor: darkBlue,
),
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Center(
child: MyWidget(),
),
),
);
}
}
class MyWidget extends HookWidget {
@override
Widget build(BuildContext context) {
final controller = useTextEditingController(text: 'eula=false');
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(controller: controller),
SwitchWidget(controller: controller),
SwitchWidget2(controller: controller),
],
);
}
}
class SwitchWidget extends HookWidget {
const SwitchWidget({required this.controller});
final TextEditingController controller;
@override
Widget build(BuildContext context) {
useListenable(controller);
return Switch(
value: controller.text == 'eula=true',
onChanged: (val) => controller.text = 'eula=$val',
);
}
}
class SwitchWidget2 extends HookWidget {
const SwitchWidget2({required this.controller});
final TextEditingController controller;
@override
Widget build(BuildContext context) {
// useListenable(controller);
return Switch(
value: controller.text == 'eula=true',
onChanged: (val) => controller.text = 'eula=$val',
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment