skip to Main Content

Please help.

I’m trying to display the photo captured in ‘Generated1Group1Widget1.dart’ to ‘GeneratedResultsWidget.dart’. However, ‘main.dart’ is having some errors.

GeneratedGroup1Widget1.dart
class GeneratedGroup1Widget1 extends StatefulWidget {
  @override
  _GeneratedGroup1Widget1State createState() => _GeneratedGroup1Widget1State();
}

class _GeneratedGroup1Widget1State extends State<GeneratedGroup1Widget1> {
  XFile? _image;

  Future _pickImage() async {
    final imageSource = await showDialog<ImageSource>(
      context: context,
      builder: (context) => SimpleDialog(
        title: const Text('Select Image Source'),
        children: [
          SimpleDialogOption(
            onPressed: () => Navigator.pop(context, ImageSource.camera),
            child: const Text('Camera'),
          ),
          SimpleDialogOption(
            onPressed: () => Navigator.pop(context, ImageSource.gallery),
            child: const Text('Gallery'),
          ),
        ],
      ),
    );
    if (imageSource != null) {
      final image = await ImagePicker().pickImage(source: imageSource);
      setState(() {
        _image = image;
      });
      Navigator.push(
        context,
        MaterialPageRoute(
        builder: (context) => GeneratedResultsWidget(image: _image),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () => _pickImage(),
      ...
GeneratedResultsWidget.dart
class GeneratedResultsWidget extends StatelessWidget {
  final XFile? image;

  GeneratedResultsWidget({
    required this.image,
  });

  @override
  Widget build(BuildContext context) {
    return Material(
        child: ClipRRect(
        ...
main.dart
void main() {
  runApp(food_classifierApp());
}

class food_classifierApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
      return ScreenUtilInit(
      designSize: Size(360, 640),
      builder: (BuildContext context,child) => MaterialApp(
        title: 'food-classifier',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        initialRoute: '/GeneratedHomepageWidget',
        routes: {
          '/GeneratedScanWidget': (context) => GeneratedScanWidget(),
          '/GeneratedResultsWidget': (context) => GeneratedResultsWidget(image: _image),
          '/GeneratedHomepageWidget': (context) => GeneratedHomepageWidget(),
          '/GeneratedFoodlistWidget': (context) => GeneratedFoodlistWidget(),
        },
      ),
    );
  }
}

Error

Undefined name '_image'.
Try correcting the name to one that is defined, or defining the name.

I already searched up google but I can’t find answers to my question. Thanks in advance!

2

Answers


  1. Where exactly you define _image variable in your food_classifierApp class?
    You should use state management to access your image or … in every where of your app

    Login or Signup to reply.
  2. You need to create model to store your picked image file from GeneratedGroup1Widget1.

    class AppModel {
      String fileName;
    
      AppModel(this.fileName);
    }
    

    Now you can call it from GeneratedGroup1Widget1

    Navigator.pushNamed(context, '/GeneratedResultsWidget',
                  arguments: AppModel('your file or file name'));
    

    And recieve it here

    class GeneratedResultsWidget extends StatelessWidget {
      const GeneratedResultsWidget({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        final args = ModalRoute.of(context)!.settings.arguments as AppModel;
    
        return Scaffold(body: Center(child: Text(args.fileName)));
      }
    }
    

    Route should be

    routes: {
              //***
              '/GeneratedResultsWidget': (context) => GeneratedResultsWidget(),
              //***
            }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search