map_view => NoSuchMethodError флаттер - PullRequest
0 голосов
/ 09 июня 2018

После обновления я вижу эту ошибку, только когда я стираю приложение и выпускаю новое приложение.Если я просто перезагружаюсь, у меня не было этой ошибки, и карта запускается правильно.Я уверен, что это было после обновления флаттера.Я сохранил проверки каждого блока, и теперь эта проблема повторяется со всеми предыдущими резервными копиями, и я уверен, что я проверяю эту функцию после удаления и переустановки приложения


в libobject_patch.dart

 @patch
 dynamic noSuchMethod(Invocation invocation) {
 // TODO(regis): Remove temp constructor identifier 'withInvocation'.
 throw new NoSuchMethodError.withInvocation(this, invocation);
  }

в консоли

E/flutter (28250): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (28250): NoSuchMethodError: The method 'substring' was called on null.
E/flutter (28250): Receiver: null
E/flutter (28250): Tried calling: substring(1, 10)
E/flutter (28250): #0      Object.noSuchMethod (dart:core/runtime/libobject_patch.dart:46:5)
E/flutter (28250): #1      _ContentState.initState.<anonymous closure> (file:///C:/Users/utilisateur/Desktop/nirbiapp/lib/Content.dart:145:40)
E/flutter (28250): #2      _RootZone.runUnaryGuarded (dart:async/zone.dart:1316:10)
E/flutter (28250): #3      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330:11)
E/flutter (28250): #4      _BufferingStreamSubscription._add (dart:async/stream_impl.dart:257:7)
E/flutter (28250): #5      _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:132:11)
E/flutter (28250): #6      _MapStream._handleData (dart:async/stream_pipe.dart:232:10)
E/flutter (28250): #7      _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:164:13)
E/flutter (28250): #8      _RootZone.runUnaryGuarded (dart:async/zone.dart:1316:10)
E/flutter (28250): #9      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:330:11)
E/flutter (28250): #10     _DelayedData.perform (dart:async/stream_impl.dart:578:14)
E/flutter (28250): #11     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:694:11)
E/flutter (28250): #12     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:654:7)
E/flutter (28250): #13     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter (28250): #14     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

флаттер доктор

C:\flutter\bin\flutter.bat --no-color doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v0.4.4, on Microsoft Windows [version 
10.0.16299.431], locale fr-FR)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.0)
[√] VS Code, 64-bit edition (version 1.21.1)
[√] Connected devices (1 available)

• No issues found!
Process finished with exit code 0

У меня появляется эта ошибка при размещении showMap здесь:

 _loadgeoValue() async {

 SharedPreferences prefs = await SharedPreferences.getInstance();
 setState(() {

 lat = (prefs.getDouble('lat'));
 long = (prefs.getDouble('long'));

    });

 showMap();

  }

Если я запускаю showMap ();после нажатой кнопки у меня нет проблем.но если я это сделаю, я не знаю, как обновить карту с переменными lat и long.

В настоящее время я запускаю карту, когда получаю смс с координатами, для этого

1 / отправляю смс с нажатой кнопкой

2 / читаю ответ с помощью: SmsReceiver() .onSmsReceived.listen ((SmsMessage msg)

3 / Я извлекаю координаты (широта) с регулярным выражением

4 / Сохраняю значения с общим предпочтением

5 /После сохранения запускаю просмотр карты с широтой и длинной координатой

1 Ответ

0 голосов
/ 09 июня 2018

Я должен заменить if (msg.address == "+ 33 $ nirbinumber1") своим собственным номером, чтобы проверить и убедиться в достижении сравнения.Пробный вызов: подстрока (1, 10) удаляется с другими строками, но у меня всегда есть libobject_patch.dart, который отображается

Вот код с подстрокой (1, 10)

 String nirbinumber ;

 loadnirbinumber() async {
   SharedPreferences prefs = await SharedPreferences.getInstance();
   setState(() {
    nirbinumber = (prefs.getString('number1'));
     });
   }

  @override
  void initState() {
  super.initState();

  loadnirbinumber(); //function to read programed number


new SmsReceiver().onSmsReceived.listen((SmsMessage msg) {   // function to listen entry sms
 var nirbinumber1= nirbinumber.substring(1, 10);          //function to extract first number 0X XX XX XX XX

  if (msg.address == "+33$nirbinumber1")                  //  Action after compare input sms with programed number +33X XX XX XX XX
 {
   setState(() {
     _lastMessage = msg;         

   });

   RegExp regExp = new RegExp(            //Here is the regex function to isolate first word of sms
       r"^([\w\-]+)",
   );
   var match = regExp.firstMatch(_lastMessage.body);
   group1 = match.group(1);

        if  ( group1 =="maps"){

        MapView.setApiKey('AIzaSyCNYMslm35FPWYFGkJVMk7aAOd174TUCGQ');

        _savegeoValue();                      // this function use shared preference to save, extract, and load map
        }
      }
    }
  );
}

Я заменяю на регулярное выражение, оно устраняет ошибку подстроки, но не noSuchMethode

new SmsReceiver().onSmsReceived.listen((SmsMessage msg) {

   RegExp regExp = new RegExp(
      r"^0([0-9]{9})",
     );
   var match = regExp.firstMatch(nirbinumber);
   group1 = match.group(1);

   if (msg.address == "+33$group1") {

     setState(() {
      _lastMessage = msg;

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...