flutterdartwebgoogle-cloud-firestore

Null Error in Flutter Web: MaterialApp causing NullPointerException on start


I'm encountering a null error in my Flutter web app, specifically related to the MaterialApp widget. When I run the app, I immediately receive a NullPointerException pointing to line 30 where the MaterialApp widget starts. I am experiencing the error since i have added the routing part.

 import 'package:flutter/material.dart';
// Other imports

void main() {
  runApp(RateMyPicApp());
}

class RateMyPicApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'RateMe',
      theme: ThemeData(
        // Theme configuration
      ),
      initialRoute: '/upload',
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/rate':
            final Map<String, dynamic> args = settings.arguments as Map<String, dynamic>;
            if (args != null && args.containsKey('id')) {
              final String id = args['id'];
              return MaterialPageRoute(builder: (context) => RatingPage(imageId: id));
            }
            break;
          case '/upload':
          default:
            return MaterialPageRoute(builder: (context) => UploadScreen());
        }
      },
      // Other properties and configuration
    );
  }
}

// Other classes and code

Solution

  • Try this Solution: Just add null at the end:

    import 'package:flutter/material.dart';
    import 'package:user_interface_1/temp1.dart';
    import 'package:user_interface_1/temp2.dart';
    
    void main() {
      runApp(RateMyPicApp());
    }
    
    
    class RateMyPicApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'RateMe',
      theme: ThemeData(
          // Theme configuration
          ),
      initialRoute: '/upload',
      onGenerateRoute: (settings) {
        switch (settings.name) {
          case '/rate':
            final Map<String, dynamic> args =
                settings.arguments as Map<String, dynamic>;
            if (args != null && args.containsKey('id')) {
              final String id = args['id'];
              return MaterialPageRoute(builder: (context) => RatingPage());
            }
            break;
          case '/upload':
          default:
            return MaterialPageRoute(builder: (context) => UploadScreen());
        }
        return null;
      },
    );
     }
    }