美文网首页flutter
Flutter实际开发bug总结

Flutter实际开发bug总结

作者: rhyme_lph | 来源:发表于2019-08-13 15:46 被阅读60次

    目录

    1.1 安卓release包缺少libflutter.so
    1.2 AndroidStudio导入项目后自动变为model,没有Flutter目录
    1.3 输入框内容为空时,长按不显示粘贴工具栏
    1.4 SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0, 4.2
    1.5 复制粘贴面板英文的问题
    1.6 调用库的时候报Methods marked with @UiThread must be executed on the main thread.Current thread: XXXX
    1.7 用Navigator.of(context).pushNamed(routeName)如何传递参数

    1.1 安卓release包缺少libflutter.so

    修改/android/app/build.gradle文件如下

    android{
        defaultConfig{
            ndk {
                abiFilters "armeabi-v7a", "x86"
           }
        }
        buildTypes {
              debug {
                  ndk {
                    abiFilters "armeabi-v7a", "x86"
                  }
              }
              release {
                  ndk {
                     abiFilters "armeabi-v7a"
                  }   
             }
        }
    }
    

    1.2 AndroidStudio导入项目后自动变为model,没有Flutter目录

    image.png

    解决方法:
    在导入项目时选择下面选项
    File-Open-选中你的项目

    1.3 输入框内容为空时,长按不显示粘贴工具栏

    将输入框中的autoFocus属性为ture去掉

    1.4 SWIFT_VERSION '5.0' is unsupported, supported versions are: 3.0, 4.0, 4.2

    将项目打开为ios项目,然后在文件列面中找到Pods(建议升级xcode即可解决)

    image.png

    1.5 复制粘贴面板英文的问题

    pubspec.yaml添加国际化支持,然后运行flutter packages get

    dependencies:
      ...
      flutter_localizations:
        sdk: flutter
    

    找到代码MaterialApp或者CupertinoApp或者WidgetsApp的文件,添加下面代码即可

            MaterialApp(
    //...
    //new
                    localizationsDelegates: const [
                      GlobalMaterialLocalizations.delegate,
                      GlobalWidgetsLocalizations.delegate
                    ],
                    supportedLocales:[
                      Locale('zh',''),
                      Locale('en','')
                    ],
    //new
                  )
    

    1.6 调用库的时候报Methods marked with @UiThread must be executed on the main thread.Current thread: XXXX

    出现该异常的主要原因是Flutter1.7.8版本添加了线程安全,需要原生在主线程中返回给Flutter
    解决方法:

    • 库的问题?
      到pub库中找到最新的版本,更改最新的版本,然后运行flutter packages get
    • 自己写的库问题?
      假如:
    //Result result  flutter的result
    new Thread(new Runnable() {
          public void run() {
    //.....
    result.success(null);//这里就会导致异常
         }).start();
    

    改为

    //Result result  flutter的result
    new Thread(new Runnable() {
          public void run() {
    //.....
        new Handler().post(new Runnable() {
                    @Override
                    public void run() {
                        result.success(file.getAbsolutePath());
                    }
                });
         }).start();
    

    上面是伪代码,不建议这样做,可能会导致内存溢出

    1.7 用Navigator.of(context).pushNamed(routeName)如何传递参数

    传递参数

    Navigator.of(context).pushNamed(routeName,arguments:{
      “name":"我是参数"
    })
    

    获取参数

    final arguments=ModalRoute.of(context).settings.arguments;
    

    欢迎在评论区留下你的bug问题,在线修bug

    相关文章

      网友评论

        本文标题:Flutter实际开发bug总结

        本文链接:https://www.haomeiwen.com/subject/xyuwaftx.html