GVKun编程网logo

正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter project(androidstudio安装flutter插件)

16

本文将分享正确配置AndroidStudio和Flutter、Dart插件版本StartanewFlutterproject的详细内容,并且还将对androidstudio安装flutter插件进行详

本文将分享正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter project的详细内容,并且还将对androidstudio安装flutter插件进行详尽解释,此外,我们还将为大家带来关于Android Alarm Manager不适用于Flutter Project App、Android Studio & Flutter logs、Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套 Widget 代码位置、android studio flutter代理设置问题的相关知识,希望对你有所帮助。

本文目录一览:

正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter project(androidstudio安装flutter插件)

正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter project(androidstudio安装flutter插件)

有时候在Android Studio Plugins 安装了Fultter、Dart插件,启动Android Studio IDE的时候依然看不到 Start a new Flutter project 菜单。这是因为Flutter、Dart插件要和Androdi Studio的Build版本对应才行。

例如Android Studio的Build版本 Build #AI-193.6911如图:

我们就要在 Jetbrain 的插件市场里寻找对应的 Flutter 插件。

https://plugins.jetbrains.com/

 

 

Dart插件版本也同理,只要版本对应,启动Android Studio的时候才会出现 Start a new Flutter project 的菜单。

 

Android Alarm Manager不适用于Flutter Project App

Android Alarm Manager不适用于Flutter Project App

我在New Flutter应用程序中安装了 Android Alarm Manager插件.我使用插件的示例代码 – 但它在控制台中出错.

请建议如何使android报警管理器插件工作.
如何将Dart的android_alarm_manager集成到应用程序中,以便用户在计划中选择的时间到达时会收到警报?

我使用此链接中的代码:
https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager

//////  main.dart://///////

    import 'dart:isolate';
    import 'package:android_alarm_manager/android_alarm_manager.dart';
    import 'package:Flutter/material.dart';

    void printHello() {
      final DateTime Now = DateTime.Now();
      final int isolateId = Isolate.current.hashCode;
      print("[$Now] Hello,world! isolate=${isolateId} function='$printHello'");
    }
    void main() async {
      final int helloAlarmID = 0;
      await AndroidAlarmManager.initialize();
      runApp(MaterialApp(home: Application()));
      await AndroidAlarmManager.periodic(const Duration(minutes: 1),helloAlarmID,printHello);
    }
    class Application extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(),);
      }
    }


///////////////Application.java/////////////////////

    package io.Flutter.plugins.androidalarmmanagerexample;
    import io.Flutter.app.FlutterApplication;
    import io.Flutter.plugin.common.PluginRegistry;
    import io.Flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
    import io.Flutter.plugins.GeneratedpluginRegistrant;

    public class Application extends FlutterApplication implements PluginRegistrantCallback {
        @Override
        public void onCreate() {
            super.onCreate();

            AlarmService.setPluginRegistrant(this);
        }
        @Override
        public void registerWith(PluginRegistry registry) {
            GeneratedpluginRegistrant.registerWith(registry);
        }
    }



///// When I run this code it gives error in console as given below://////

E/Flutter ( 6831): [ERROR:Flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(error,Attempt to invoke interface method 'void io.Flutter.plugin.common.PluginRegistry$PluginRegistrantCallback.registerWith(io.Flutter.plugin.common.PluginRegistry)' on a null object reference,null)
E/Flutter ( 6831): #0      JSONMethodCodec.decodeEnvelope (package:Flutter/src/services/message_codecs.dart:149:7)
E/Flutter ( 6831): #1      MethodChannel.invokeMethod (package:Flutter/src/services/platform_channel.dart:302:33)
E/Flutter ( 6831): <asynchronous suspension>
E/Flutter ( 6831): #2      AndroidAlarmManager.initialize (package:android_alarm_manager/android_alarm_manager.dart:76:10)
E/Flutter ( 6831): <asynchronous suspension>
E/Flutter ( 6831): #3      main (package:alarmdemo/main.dart:12:29)
E/Flutter ( 6831): <asynchronous suspension>
E/Flutter ( 6831): #4      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:189:25)
E/Flutter ( 6831): #5      _rootRun (dart:async/zone.dart:1124:13)
E/Flutter ( 6831): #6      _CustomZone.run (dart:async/zone.dart:1021:19)
E/Flutter ( 6831): #7      _runZoned (dart:async/zone.dart:1516:10)
E/Flutter ( 6831): #8      runZoned (dart:async/zone.dart:1500:12)
E/Flutter ( 6831): #9      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:180:5)
E/Flutter ( 6831): #10     _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:300:19)
E/Flutter ( 6831): #11     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
E/Flutter ( 6831): 
E/Flutter ( 6831): [ERROR:Flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method AlarmService.initialized on channel plugins.Flutter.io/android_alarm_manager_background)
E/Flutter ( 6831): #0      MethodChannel.invokeMethod (package:Flutter/src/services/platform_channel.dart:300:7)
E/Flutter ( 6831): <asynchronous suspension>
E/Flutter ( 6831): #1      _alarmManagerCallbackdispatcher (package:android_alarm_manager/android_alarm_manager.dart:49:12)
E/Flutter ( 6831): #2      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:189:25)
E/Flutter ( 6831): #3      _rootRun (dart:async/zone.dart:1124:13)
E/Flutter ( 6831): #4      _CustomZone.run (dart:async/zone.dart:1021:19)
E/Flutter ( 6831): #5      _runZoned (dart:async/zone.dart:1516:10)
E/Flutter ( 6831): #6      runZoned (dart:async/zone.dart:1500:12)
E/Flutter ( 6831): #7      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:180:5)
E/Flutter ( 6831): #8      _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:300:19)
E/Flutter ( 6831): #9      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
E/Flutter ( 6831):

这是我更新的代码:

/////////////main.dart//////////

    void printHello() {
      final DateTime Now = new DateTime.Now();
      final int isolateId = Isolate.current.hashCode;
      print("[$Now] Hello,world! isolate=${isolateId} 
      function='$printHello'");
    }

    void main() async {
    runApp(MaterialApp(home: Application()));
    }

     class Application extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Container(
            child: Center(
              child: RaisedButton(
                child: Text('Hello'),onpressed: () {
                  runAlarm();
                },),);
      }

  void runAlarm() {
    AndroidAlarmManager.oneshot(
      Duration(seconds: 10),printHello,wakeup: true,).then((val) => print(val));
  }
  static void alarmtest() {
    print("test");
  }

}

It does not give any Error in console but print two statements as below:

E/AlarmService(11943): Fatal: Failed to find callback
I/AlarmService(11943): AlarmService has not yet started.


I also initialize the alarm manager but it gives error in console:


 void runAlarm() {
    AndroidAlarmManager.periodic(
      Duration(seconds: 10),).then((val) => print(val)).catchError((e) {
      print(e);
    });
  }


Error:

E/Flutter ( 6831): [ERROR:Flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: PlatformException(error,null)
    E/Flutter ( 6831): #0      JSONMethodCodec.decodeEnvelope (package:Flutter/src/services/message_codecs.dart:149:7)
    E/Flutter ( 6831): #1      MethodChannel.invokeMethod (package:Flutter/src/services/platform_channel.dart:302:33)
    E/Flutter ( 6831): <asynchronous suspension>
    E/Flutter ( 6831): #2      AndroidAlarmManager.initialize (package:android_alarm_manager/android_alarm_manager.dart:76:10)
    E/Flutter ( 6831): <asynchronous suspension>
    E/Flutter ( 6831): #3      main (package:alarmdemo/main.dart:12:29)
    E/Flutter ( 6831): <asynchronous suspension>
    E/Flutter ( 6831): #4      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:189:25)
    E/Flutter ( 6831): #5      _rootRun (dart:async/zone.dart:1124:13)
    E/Flutter ( 6831): #6      _CustomZone.run (dart:async/zone.dart:1021:19)
    E/Flutter ( 6831): #7      _runZoned (dart:async/zone.dart:1516:10)
    E/Flutter ( 6831): #8      runZoned (dart:async/zone.dart:1500:12)
    E/Flutter ( 6831): #9      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:180:5)
    E/Flutter ( 6831): #10     _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:300:19)
    E/Flutter ( 6831): #11     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
    E/Flutter ( 6831): 
    E/Flutter ( 6831): [ERROR:Flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method AlarmService.initialized on channel plugins.Flutter.io/android_alarm_manager_background)
    E/Flutter ( 6831): #0      MethodChannel.invokeMethod (package:Flutter/src/services/platform_channel.dart:300:7)
    E/Flutter ( 6831): <asynchronous suspension>
    E/Flutter ( 6831): #1      _alarmManagerCallbackdispatcher (package:android_alarm_manager/android_alarm_manager.dart:49:12)
    E/Flutter ( 6831): #2      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:189:25)
    E/Flutter ( 6831): #3      _rootRun (dart:async/zone.dart:1124:13)
    E/Flutter ( 6831): #4      _CustomZone.run (dart:async/zone.dart:1021:19)
    E/Flutter ( 6831): #5      _runZoned (dart:async/zone.dart:1516:10)
    E/Flutter ( 6831): #6      runZoned (dart:async/zone.dart:1500:12)
    E/Flutter ( 6831): #7      _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:180:5)
    E/Flutter ( 6831): #8      _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:300:19)
    E/Flutter ( 6831): #9      _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
    E/Flutter ( 6831):

enter image description here

解决方法

您没有初始化警报对象和回调处理程序.

await AndroidAlarmManager.initialize();

当应用程序开始运行时会发生什么:

void main() async {
    runApp(MaterialApp(home: Application()));
 }

该应用程序只是为您运行并绘制UI.单击该按钮后,将调用以下方法:

AndroidAlarmManager.oneshot(
   Duration(seconds: 10),)

此函数只是在指定的延迟时间后调度回调.这将失败,因为Callback处理程序未注册.意思是,在超时后,它找不到“任何人”负责运行’printHello’.

编辑:

您还需要覆盖一个方法来帮助插件在创建时注册.

创建一个如下所示的新文件:

yourapprootfolder/android/app/src/main/java/io/Flutter/plugins/androidalarmmanagerexample/Application.java

在.java文件中,放入:

package io.Flutter.plugins.androidalarmmanagerexample;

import io.Flutter.app.FlutterApplication;
import io.Flutter.plugin.common.PluginRegistry;
import io.Flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.Flutter.plugins.GeneratedpluginRegistrant;
import io.Flutter.plugins.androidalarmmanager.AlarmService;

public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    AlarmService.setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedpluginRegistrant.registerWith(registry);
  }
}

或在Kt文件中:

package io.Flutter.plugins.androidalarmmanagerexample;

import io.Flutter.app.FlutterApplication;
import io.Flutter.plugin.common.PluginRegistry;
import io.Flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.Flutter.plugins.GeneratedpluginRegistrant;
import io.Flutter.plugins.androidalarmmanager.AlarmService;

class Application : FlutterApplication(),PluginRegistrantCallback {
      override fun onCreate() {
        super.onCreate();
        AlarmService.setPluginRegistrant(this);
      }

      override fun registerWith(registry: PluginRegistry) {
        GeneratedpluginRegistrant.registerWith(registry);
      }
}

Android Studio & Flutter logs

Android Studio & Flutter logs

Android Studio Http代理(重启生效)

mirrors.neusoft.edu.cn:80

 

Flutter 镜像

PUB_HOSTED_URL=https://pub.Flutter-io.cn
FlutteR_STORAGE_BASE_URL=https://storage.Flutter-io.cn

 

Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套 Widget 代码位置

Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套 Widget 代码位置

题记
—— 执剑天涯,从你的点滴积累开始,所及之处,必精益求精。


Flutter 是谷歌推出的最新的移动开发框架。

【x1】微信公众号的每日提醒 随时随记 每日积累 随心而过

【x2】各种系列的视频教程 免费开源 关注 你不会迷路

【x3】系列文章 百万 Demo 随时 复制粘贴 使用


Flutter 是最新一代的跨平台开发框架,目前我们使用 Flutter 来架构了产业链中的几款 APP,随着业务的扩大,以及项目的快速迭代,在未进行模式设计时,Flutter 中堆叠了大量的代码,有时一个 Widget 页面的代码量就可能达 5000 多行,如果你是开发人员,新接手到这样的项目,多多少少会有点想吐,或者说这个页面也可能是你亲自开发出来的,但是经过一年两年这样的时间历程以及多次业务逻辑的改造,你再去维护这样的页面内容多少会有点闹心,当然小编也亲身经历过,那就是在初次使用 Flutter 开发项目时,边学边堆叠代码,到最后代码的风格各式各样的写法,当然也堆叠了大量的代码块,经过几个月后,再去维护,真是那个闹心。

所幸的是,在 Android Studio 中,对 Flutter 项目,有了很好的扩展工具支持,默认情况下,在 Android Studio 开发工具的右侧边栏上有一个 Flutter Inspector 工具,可以快速的定位 UI 代码,操作步骤【点击查看视频】,合理的应用这个工具,可以帮你节省 1 倍以上的开发时间。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当然需要注意的是每次切换选择时,都需要执行一下如下图所示的第二步的刷新同步一下页面的 Widget 。
当你不再使用时,执行一下第三步的操作,不选中即可。

本文同步分享在 博客 “早起的年轻人”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。

android studio flutter代理设置问题

android studio flutter代理设置问题

前提

初次安装flutter,通过代理设置加快速度安装首次更新数据,但在添加设备并开始打包编译时出现classpath找不到的情况

1.在初次启动IDE的时候会提示更新各种SDK包,此时一般会直接设置代理,我的系统时Ubuntu18.04,所以直接代理了本地vpn,127.0.0.1 端口1080

2.在编译打包的时候出现了找不到相关的包,原因是flutter三个默认配置的地方采用了Google路径的包

切换maven包源为国内阿里源

在android/build.gradle下都换为

//        google()
//        jcenter()
maven { url ''https://maven.aliyun.com/repository/google'' }
maven { url ''https://maven.aliyun.com/repository/jcenter'' }
maven { url ''http://maven.aliyun.com/nexus/content/groups/public'' }

切换flutter sdk包源为国内阿里源

flutter安装路径

vim /home/elinx/web/tools/flutter/packages/flutter_tools/gradle/flutter.gradle

//        google()
//        jcenter()
maven { url ''https://maven.aliyun.com/repository/google'' }
maven { url ''https://maven.aliyun.com/repository/jcenter'' }
maven { url ''http://maven.aliyun.com/nexus/content/groups/public'' }

关闭IDE全局代理 : 设置->搜索proxy

关闭由于IDE自己生成的本地的全局代理(这里才是IDE内部最终代理使用配置)

我的本地路径: vim .gradle/gradle.properties

注释所有代理项和端口

systemProp.https.nonProxyHosts=192.168.*,*.test
#systemProp.https.proxyPort=1080
#systemProp.http.proxyHost=127.0.0.1
systemProp.http.nonProxyHosts=192.168.*,*.test
#systemProp.https.proxyHost=127.0.0.1
#systemProp.http.proxyPort=1080

关于正确配置Android Studio和Flutter、Dart插件版本 Start a new Flutter projectandroidstudio安装flutter插件的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android Alarm Manager不适用于Flutter Project App、Android Studio & Flutter logs、Android Studio Flutter 调试技巧 Flutter Inspector 提升你的维护开发效率 轻松定位复杂嵌套 Widget 代码位置、android studio flutter代理设置问题的相关信息,请在本站寻找。

本文标签: