это неверный вопрос noSuchMethod Error

#flutter #dart

#флаттер #dart

Вопрос:

Я хочу создать предложение из API, поэтому я создал эту функцию для вызова API, который вы найдете ниже функции createoffre

 Future<dynamic> createOffre(String type , String title , int categorie , bool financial_contrib,
         bool emploi , int niveau , int poste , int profil , int sexe , int sport) async {
       Response response = await this
           .dio
           .post(Uri.encodeFull(this.appConfig.baseUrl   "/node"),
           data: {
             "type": type,
             "title": [
               {
                 "value": title
               }
             ],
             "field_categorie": [
               {
                 "target_id": categorie
               }
             ],
             "field_financial_contrib": [
               {
                 "value": financial_contrib
               }
             ],
             "field_emploi_possible": [
               {
                 "value": emploi
               }
             ],
             "field_niveau": [
               {
                 "target_id": niveau
               }
             ],
             "field_postes": [
               {
                 "target_id": poste
               }
             ],
             "field_profil_recherche": [
               {
                 "target_id": profil
               }
             ],
             "field_sexe": [
               {
                 "target_id": sexe
               }
             ],
             "field_sport": [
               {
                 "target_id": sport
               }
             ]
           },
    
       );
    
       if (response.statusCode == 200){
         print("done");
         return true;
       }else{
         print("error");
    
         return false;
       }
    
       /*print(this
           .cookieJar
           .loadForRequest(Uri.parse(this.appConfig.baseUrl   "/node")));
    
       print("Response ${response.data}");*/
    
       //return response;
     }
  

////////////////////////////////////////////////////////////////////////////////////////////////
итак, когда я выполнил вызов функции в файле AddOffer

ниже приведен код вызова функции

 onPressed: () async {
                                if (_formKey.currentState.validate()) {
                                  _formKey.currentState.save();


                                  final dynamic response =
                                  await offreManger.createOffre(
                                      "offre_club",
                                      _controllerTitre.text,
                                      int.parse(selectedIdcategorie),
                                      true,
                                      true,
                                      int.parse(selectedIdlevel),
                                      1, 1, int.parse(selectedIdSexe),
                                      int.parse(selectedIdSport)
                                  );
                                  if (response != false) {


                                    Navigator.push(
                                      context,
                                      MaterialPageRoute(
                                        builder: (context) {
                                          return ProfileObject();
                                        },
                                        fullscreenDialog: false,
                                      ),
                                    );
                                  } else {

                                    return AwesomeDialog(
                                        context: context,
                                        dialogType: DialogType.ERROR,
                                        animType: AnimType.SCALE,
                                        headerAnimationLoop: false,
                                        title: 'Erreur',
                                        desc: "verifier vos identifiants",
                                        btnOkOnPress: () {},
                                        btnOkColor: Colors.red)
                                        .show();
                                  }
                                  return;
                                }


                              },
  

//////////////////////////////////////////////////////////////////////////////////////////////////

когда я проверяю форму и нажимаю кнопку для выполнения функции, я получаю следующую ошибку, так что мне делать

 E/flutter (24391): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'createOffre' was called on null.
E/flutter (24391): Receiver: null
E/flutter (24391): Tried calling: createOffre("offre_club", "ee", 230, true, true, 131, 1, 1, 130, 1)
E/flutter (24391): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (24391): #1      _AjouterOffreFormState.build.<anonymous closure> (package:monmercato_app/Widgets/OffreWidget/AjouterOffreForme.dart:207:53)
E/flutter (24391): #2      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:992:19)
E/flutter (24391): #3      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:1098:38)
E/flutter (24391): #4      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:184:24)
E/flutter (24391): #5      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:524:11)
E/flutter (24391): #6      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:284:5)
E/flutter (24391): #7      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:219:7)
E/flutter (24391): #8      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:477:9)
E/flutter (24391): #9      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:78:12)
E/flutter (24391): #10     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:124:9)
E/flutter (24391): #11     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:377:8)
E/flutter (24391): #12     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:122:18)
E/flutter (24391): #13     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:108:7)
E/flutter (24391): #14     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:220:19)
E/flutter (24391): #15     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:200:22)
E/flutter (24391): #16     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:158:7)
E/flutter (24391): #17     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:104:7)
E/flutter (24391): #18     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:88:7)
E/flutter (24391): #19     _rootRunUnary (dart:async/zone.dart:1206:13)
E/flutter (24391): #20     _CustomZone.runUnary (dart:async/zone.dart:1100:19)
E/flutter (24391): #21     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1005:7)
E/flutter (24391): #22     _invoke1 (dart:ui/hooks.dart:267:10)
E/flutter (24391): #23     _dispatchPointerDataPacket (dart:ui/hooks.dart:176:5)
E/flutter (24391): 
  

Комментарии:

1. Параметр offreManger должен быть не нулевым

2. вот интерпретатор OfferManager OffreManager() { this.dio = new Dio(); this.init(); }

3. и это функция инициализации Future<void> init() async { Каталог appDocDir = ожидает getApplicationDocumentsDirectory(); Строка appDocPath = appDocDir.path; this.cookieJar = новый постоянный файл Cookie(dir: appDocPath «/.cookies/»); this.dio.interceptors.add(CookieManager(this. cookieJar)); this.cookieJar.deleteAll(); this.prefs = ожидает SharedPreferences.getInstance(); this.AppConfig = ожидает AppConfig.forEnvironment(‘dev’); возвращает null; }

4. @BrahimCHEBBI Пожалуйста, отредактируйте свой вопрос и добавьте в него дополнительную информацию!

Ответ №1:

Метод ‘createOffre’ был вызван в null.

Ваша переменная offreManger является null . Этого не должно быть. Вы должны инициализировать его в каком-либо месте, либо там, где вы его объявляете, или, может быть, в initState или где бы вы ни хотели это сделать, но он должен быть инициализирован чем-то, прежде чем вы вызовете для него функцию.