Skip to content

Instantly share code, notes, and snippets.

@AdnanKhan45
Created February 18, 2024 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AdnanKhan45/c1a4a4e2cba0475c327219ee9ccfd94c to your computer and use it in GitHub Desktop.
Save AdnanKhan45/c1a4a4e2cba0475c327219ee9ccfd94c to your computer and use it in GitHub Desktop.
Use MaterialStateController to increase access to text widget state
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: CustomTextField(),
),
),
);
}
}
class CustomTextField extends StatefulWidget {
@override
_CustomTextFieldState createState() => _CustomTextFieldState();
}
class _CustomTextFieldState extends State<CustomTextField> {
late final MaterialStatesController _statesController;
final TextEditingController _controller = TextEditingController();
@override
void initState() {
super.initState();
_statesController = MaterialStatesController();
// Hypothetical listener setup to respond to state changes
_statesController.addListener(() {
Set<MaterialState> states = _statesController.value;
if (states.contains(MaterialState.focused)) {
// Handle focused state
print("TextField is focused");
} else if (states.contains(MaterialState.hovered)) {
// Handle focused state
print("TextField is hovered");
} else {
// Handle unfocused state
print("TextField is not focused");
}
});
}
@override
void dispose() {
_statesController.dispose();
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Padding(
padding: EdgeInsets.all(10),
child: TextField(
controller: _controller,
statesController: _statesController,
decoration: InputDecoration(
labelText: 'Enter something',
border: OutlineInputBorder(
borderSide: BorderSide(
width: 2.0,
),
),
),
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment