isLoading vsValueNotifier

Using ValueNotifier

class HomePage extends StatefulWidget {
  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final ValueNotifier<bool> isLoading = ValueNotifier(false);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Home Page")),
      body: ValueListenableBuilder<bool>(
        valueListenable: isLoading,
        builder: (context, loading, child) {
          if (loading) {
            return const Center(child: CircularProgressIndicator());
          }

          // Other content...
        },
      ),
    );
  }

  Future<void> _handleFunction(String id) async {
    isLoading.value = true;
    try {
      await databaseService.addToDatabase(widget.agentUid, routeId);
    } catch (error) {
      _alertService.showToast(text: 'Failed to add route.', icon: Icons.error);
    } finally {
      isLoading.value = false;
    }
  }
}


Using isLoading

class HomePage extends StatefulWidget {
  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  bool isLoading = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Home Page")),
      body: isLoading
          ? const Center(child: CircularProgressIndicator())
          : // Other content...
          Center(child: Text("Content goes here")),
    );
  }

  Future<void> _handleFunction(String id) async {
    setState(() {
      isLoading = true;
    });

    try {
      await databaseService.addToDatabase(widget.agentUid, routeId);
    } catch (error) {
      _alertService.showToast(text: 'Failed to add route.', icon: Icons.error);
    } finally {
      setState(() {
        isLoading = false;
      });
    }
  }
}