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();
        });
  }
}
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
  }
}
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.