State Management
Let's see how to add a new screen in the application with the help of controller and builder.
Screen (Stateful Widget)
import 'package:flutter/material.dart'; import 'package:flutx/flutx.dart'; import 'package:flutkit/theme/app_theme.dart'; import 'package:flutkit/theme/custom_theme.dart'; import '_controller.dart'; class Screen extends StatefulWidget { // Change screen name const Screen({Key? key}) : super(key: key); @override _ScreenState createState() => _ScreenState(); } class _ScreenState extends State<Screen> { late ThemeData theme; late CustomTheme customTheme; late Controller controller; // Define Controller here @override void initState() { super.initState(); theme = AppTheme.theme; customTheme = AppTheme.customTheme; // Initialise Controller here and by default save is true. controller = FxControllerStore.putOrFind(Controller(save: false)); } @override Widget build(BuildContext context) { return FxBuilder<Controller>( // Link Controller here controller: controller, builder: (controller) { return Scaffold(); }); } }
For more changes, have a look at the file - 'lib/apps/sample/_screen.dart'
Controller
import 'package:flutx/flutx.dart'; class Controller extends FxController { // Change Controller name here @override void initState() { super.initState(); } @override String getTag() { return "controller"; // Give a unique tag name to the controller here } }
For more changes, have a look at the file - 'lib/apps/sample/_controller.dart'
FxController Store
This is the file where the controllers are stored in the form of list. It always stores the state of the controller with save:true. But if you do not want to save the state then you should write save:false.