GithubHelp home page GithubHelp logo

flutter / flutter-intellij Goto Github PK

View Code? Open in Web Editor NEW
2.0K 126.0 316.0 170.74 MB

Flutter Plugin for IntelliJ

Home Page: https://flutter.dev/using-ide

License: BSD 3-Clause "New" or "Revised" License

Java 96.52% Shell 0.19% Dart 2.14% HTML 0.01% Kotlin 1.07% Batchfile 0.06%
intellij-plugin java flutter

flutter-intellij's Issues

Delete project bug

Cannot create a project after deleting a project with the same name. Repro

  1. Create a new flutter project named 'sample'
  2. Close the project window
  3. Remove 'sample' from File>Open Recent... list (via Manage Projects) [optional]
  4. Delete 'sample' folder from disk [optional]
  5. Create a new flutter project named 'sample'

Result is this stack trace:

Already disposed: Project (Disposed) sample
java.lang.AssertionError: Already disposed: Project (Disposed) sample
    at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:171)
    at com.intellij.psi.PsiDocumentManager.getInstance(PsiDocumentManager.java:48)
    at com.intellij.openapi.editor.impl.SettingsImpl.getDocumentLanguage(SettingsImpl.java:223)
    at com.intellij.openapi.editor.impl.SettingsImpl.<init>(SettingsImpl.java:102)
    at com.intellij.openapi.editor.impl.EditorImpl.<init>(EditorImpl.java:365)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl.createEditor(EditorFactoryImpl.java:187)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl.createViewer(EditorFactoryImpl.java:168)
    at com.intellij.execution.impl.ConsoleViewUtil.setupConsoleEditor(ConsoleViewUtil.java:63)
    at com.intellij.execution.impl.ConsoleViewImpl.doCreateConsoleEditor(ConsoleViewImpl.java:977)
    at com.intellij.execution.impl.ConsoleViewImpl$8.compute(ConsoleViewImpl.java:912)
    at com.intellij.execution.impl.ConsoleViewImpl$8.compute(ConsoleViewImpl.java:909)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:872)
    at com.intellij.execution.impl.ConsoleViewImpl.createConsoleEditor(ConsoleViewImpl.java:909)
    at com.intellij.execution.impl.ConsoleViewImpl.initConsoleEditor(ConsoleViewImpl.java:513)
    at com.intellij.execution.impl.ConsoleViewImpl.getComponent(ConsoleViewImpl.java:492)
    at io.flutter.console.FlutterConsole.show(FlutterConsole.java:39)
    at io.flutter.console.FlutterConsole.attach(FlutterConsole.java:34)
    at io.flutter.sdk.FlutterSdk.run(FlutterSdk.java:155)
    at io.flutter.module.FlutterModuleBuilder.setupProject(FlutterModuleBuilder.java:110)
    at io.flutter.module.FlutterModuleBuilder.setupRootModel(FlutterModuleBuilder.java:58)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.setupModule(ModuleBuilder.java:264)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.createModule(ModuleBuilder.java:257)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.createAndCommitIfNeeded(ModuleBuilder.java:295)
    at com.intellij.ide.util.projectWizard.ModuleBuilder$3.compute(ModuleBuilder.java:344)
    at com.intellij.ide.util.projectWizard.ModuleBuilder$3.compute(ModuleBuilder.java:341)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:935)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.commitModule(ModuleBuilder.java:341)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.commit(ModuleBuilder.java:327)
    at com.intellij.ide.impl.NewProjectUtil.doCreate(NewProjectUtil.java:149)
    at com.intellij.ide.impl.NewProjectUtil.createFromWizard(NewProjectUtil.java:76)
    at com.intellij.ide.impl.NewProjectUtil.createNewProject(NewProjectUtil.java:71)
    at com.intellij.ide.actions.NewProjectAction.actionPerformed(NewProjectAction.java:31)
    at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:199)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:215)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$2(ActionMenuItem.java:304)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:905)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:284)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.access$300(TransactionGuardImpl.java:40)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:113)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:123)
    at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:107)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

Add a flutter console

(Or attach to a pre-existing one.)

We'll want this to display output from flutter commands (e.g., create).

Create a New "Flutter Project" Template/Wizard

Essentially a wrapper around flutter create. Should show up as a proposed project template in the New Project Wizard.

  • contribute "New Flutter Project" wizard, that
  • creates project contents (call flutter create)
  • enables Dart Support
  • opens lib/main.dart in an editor

Fix first page of New Flutter Project Wizard to be meaningful

Removing the old custom wizard step exposed one inherited from the framework.

screen shot 2016-08-17 at 4 07 41 pm

Needless to say it adds no value but I can't see a way to remove it.

I think we need to specify something...

  • a blurb about flutter?
  • project level settings? (are there any?)
  • a picture of the team? ๐Ÿ˜„

add instructions for very, very early dogfooding

This is a placeholder for some very, very early dogfooding instructions, and some one-off binary builds of the flutter and dart plugins.

Possibly to be replaced and hosted on internal development infrastructure.

Notify user when the Dart SDK differs from the one bundled with Flutter

It may be confusing to users if the default SDK defined in the Dart Plugin and the one bundled with Flutter disagree. An easy mitigation would be to define an inspection that detects this case and notifies the user. They may choose to correct it or ignore it.
โ€จTwo places where this might make sense:

  • in Flutter SDK configuration
  • as an inspection that generates an editor notification

In both places the warning should be dismissible.

cc @devoncarew

Run flutter unit tests (flutter test)

Need a way to run unit tests for Flutter apps. Assuming flutter continues to use package:test we probably want similar support to what Dart already has. Dart tests are presented in the IntelliJ test UI with linkage back to source and ability to filter pass/fail/skip.

Make console persist.

In particular, the Flutter Console gets clobbered by the Analysis view.

Maybe this is a matter of making the view pinnable?

Fix gradle build.

Mine generates a jar with just 261 bytes.

I also see this when I gradle build:

plugin.xml with 'idea-plugin' root is not found. IntelliJ specific tasks will be unavailable for :flutter-intellij.
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes
:jar UP-TO-DATE
:assemble UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE

suggesting the likely culprit.

Process management

Debugging requires the ability to control the process being debugged, including I/O.

Race condition with console creation and disposed projects.

Occurred when creating a fresh project but reusing the current window.

[ 128552]  ERROR - llij.ide.plugins.PluginManager - Already disposed: Project (Disposed) fp_8787878 
java.lang.AssertionError: Already disposed: Project (Disposed) fp_8787878
    at com.intellij.openapi.components.impl.ComponentManagerImpl.getComponent(ComponentManagerImpl.java:166)
    at com.intellij.psi.PsiDocumentManager.getInstance(PsiDocumentManager.java:48)
    at com.intellij.openapi.editor.impl.SettingsImpl.getDocumentLanguage(SettingsImpl.java:223)
    at com.intellij.openapi.editor.impl.SettingsImpl.<init>(SettingsImpl.java:102)
    at com.intellij.openapi.editor.impl.EditorImpl.<init>(EditorImpl.java:349)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl.createEditor(EditorFactoryImpl.java:193)
    at com.intellij.openapi.editor.impl.EditorFactoryImpl.createViewer(EditorFactoryImpl.java:174)
    at com.intellij.execution.impl.ConsoleViewUtil.setupConsoleEditor(ConsoleViewUtil.java:63)
    at com.intellij.execution.impl.ConsoleViewImpl.doCreateConsoleEditor(ConsoleViewImpl.java:977)
    at com.intellij.execution.impl.ConsoleViewImpl$8.compute(ConsoleViewImpl.java:912)
    at com.intellij.execution.impl.ConsoleViewImpl$8.compute(ConsoleViewImpl.java:909)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:870)
    at com.intellij.execution.impl.ConsoleViewImpl.createConsoleEditor(ConsoleViewImpl.java:909)
    at com.intellij.execution.impl.ConsoleViewImpl.initConsoleEditor(ConsoleViewImpl.java:513)
    at com.intellij.execution.impl.ConsoleViewImpl.getComponent(ConsoleViewImpl.java:492)
    at io.flutter.console.FlutterConsole.show(FlutterConsole.java:39)
    at io.flutter.console.FlutterConsole.attach(FlutterConsole.java:34)
    at io.flutter.sdk.FlutterSdk.run(FlutterSdk.java:188)
    at io.flutter.module.FlutterModuleBuilder.setupProject(FlutterModuleBuilder.java:105)
    at io.flutter.module.FlutterModuleBuilder.setupRootModel(FlutterModuleBuilder.java:54)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.setupModule(ModuleBuilder.java:264)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.createModule(ModuleBuilder.java:257)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.createAndCommitIfNeeded(ModuleBuilder.java:295)
    at com.intellij.ide.util.projectWizard.ModuleBuilder$3.compute(ModuleBuilder.java:344)
    at com.intellij.ide.util.projectWizard.ModuleBuilder$3.compute(ModuleBuilder.java:341)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:933)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.commitModule(ModuleBuilder.java:341)
    at com.intellij.ide.util.projectWizard.ModuleBuilder.commit(ModuleBuilder.java:327)
    at com.intellij.ide.impl.NewProjectUtil.doCreate(NewProjectUtil.java:149)
    at com.intellij.ide.impl.NewProjectUtil.createFromWizard(NewProjectUtil.java:76)
    at com.intellij.ide.impl.NewProjectUtil.createNewProject(NewProjectUtil.java:71)
    at com.intellij.ide.actions.NewProjectAction.actionPerformed(NewProjectAction.java:31)
    at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:199)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:156)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:213)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.lambda$actionPerformed$2(ActionMenuItem.java:304)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:905)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:284)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.lambda$fireActionPerformed$0(ActionMenuItem.java:112)
    at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:88)
    at com.intellij.openapi.application.TransactionGuardImpl.access$300(TransactionGuardImpl.java:40)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:113)
    at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:123)
    at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:109)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:112)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:308)
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
    at com.apple.laf.ScreenMenuItemCheckbox.itemStateChanged(ScreenMenuItemCheckbox.java:193)
    at java.awt.CheckboxMenuItem.processItemEvent(CheckboxMenuItem.java:389)
    at java.awt.CheckboxMenuItem.processEvent(CheckboxMenuItem.java:357)
    at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:351)
    at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:339)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:761)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:829)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:665)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:385)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
[ 128554]  ERROR - llij.ide.plugins.PluginManager - IntelliJ IDEA (Community Edition) 2016.3 EAP  Build #IC-163.SNAPSHOT 
[ 128554]  ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_91 
[ 128554]  ERROR - llij.ide.plugins.PluginManager - VM: Java HotSpot(TM) 64-Bit Server VM 
[ 128554]  ERROR - llij.ide.plugins.PluginManager - Vendor: Oracle Corporation 
[ 128554]  ERROR - llij.ide.plugins.PluginManager - OS: Mac OS X 
[ 128554]  ERROR - llij.ide.plugins.PluginManager - Last Action: NewProject 
[ 129588]  ERROR - pplication.impl.LaterInvocator - null 
java.lang.AssertionError
    at com.intellij.diagnostic.IdeMessagePanel.showErrorNotification(IdeMessagePanel.java:274)
    at com.intellij.diagnostic.IdeMessagePanel.lambda$updateFatalErrorsIcon$1(IdeMessagePanel.java:228)
    at com.intellij.openapi.application.TransactionGuardImpl$6.run(TransactionGuardImpl.java:294)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:334)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:318)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:829)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:665)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:385)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

august-1 meta issue

  • testing (automated; unit tests; #30, #66, #96)
  • project creation flow
  • better clarity on how we distribute the plugin (versioning issues w/ the Dart plugin; building against the last stable IntelliJ API)
  • determine the user flows we'll use to guide our initial development (project creation to hitting a breakpoint; opening an existing project on disk to hitting a breakpoint) (https://github.com/flutter/flutter-intellij/wiki/User-Journeys)
  • write a manual testing script; to be maintained as we add features

Allow for the creation of multiple Flutter SDKs

Before long we'll want to allow users to move between multiple SDKs (possibly allowing for per-project configuration a la the conversation in #54). To facilitate this, we should support SDK configuration like the Java tooling does.

For example, where for Java we might see:

screen shot 2016-08-23 at 10 05 29 am

we could imagine something similar for Flutter like:

screen shot 2016-08-23 at 10 02 48 am

Identify what IntelliJ products we want to support (and how).

The sooner we get clear on what we want to support the better.

It would also be good to clarify whether we want tiers of support in order to provide the best experience in each product or shoot for a lowest common denominator that works equally well in all but sub-optimally in some.

cc @devoncarew

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.