【问题标题】:map_view => NoSuchMethodError fluttermap_view => NoSuchMethodError 颤动
【发布时间】:2018-06-09 13:00:16
【问题描述】:

更新颤振后,我只有在删除应用程序并发布新应用程序时才会出现此错误。如果我只是热重载,我没有这个错误并且地图可以正确启动。 我确定这是在更新颤振之后。我保存了每个 blocs 验证,现在这个问题可以重复所有以前的备份,我确定我在删除并重新安装应用程序后验证了这个功能


在 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/ 我用 Onpressed 按钮发送短信

2/ 我阅读了回复:SmsReceiver().onSmsReceived.listen((SmsMessage msg)

3/ 我用正则表达式提取坐标(经纬度)

4/ 我以共享偏好保存值

5/ 保存后,我启动带有经纬度坐标的地图视图

【问题讨论】:

  • 这里的问题与 map_view 无关。你在一个空字符串上调用substring(1, 10)。发布包含substring(1, 10) 部分的代码。这样我们就可以指出确切的问题。

标签: dart flutter android-mapview nosuchmethoderror


【解决方案1】:

我已经用我自己的号码替换 if (msg.address == "+33$nirbinumber1") 来测试并确定比较的结果。尝试调用:substring(1, 10) 与其他行一起删除,但我总是显示 libobject_patch.dart

这里是带有 substring(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;

    });

【讨论】:

    猜你喜欢
    • 2023-01-07
    • 2019-01-16
    • 2019-07-14
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2019-02-08
    相关资源
    最近更新 更多