I want to use the new spread syntax in Dart.
I'm using Android Studio for Flutter development and I receive this error.
This requires the --spread-collections experiment to be enabled
ListView(children: [...listTiles, MyWidget()])
However, I didn't find anywhere where I could specify this option.
I couldn't even make it work on the command line. flutter --spread-collections run gives Could not find an option named "spread-collections"..
flutter --version
Flutter 1.3.8 • channel beta • https://github.com/flutter/flutter.git
Framework • revision e5b1ed7a7f (4 weeks ago) • 2019-03-06 14:23:37 -0800
Engine • revision f4951df193
Tools • Dart 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)
You need to create an analysis_options.yaml file in the root of your flutter app and write something like
analyzer:
enable-experiment:
- spread-collections
Also make sure to switch to the correct channel where the new feature is included eg (dev, beta or master)
flutter channel dev
And also make sure you have a recent enough version of flutter
flutter upgrade
Ensure you are on the right version of flutter and dart that allows that feature by running
flutter --version
you may also have to manually change your pubspec.yaml file to specify the correct dart sdk (if so rerun flutter upgrade)
environment:
sdk: ">=2.10.0-0 <3.0.0"
In my case, I have followed these two steps and It worked for me.
run "flutter upgrade"
changing the sdk in the environment in pubspec.yaml
environment:
sdk: ">=2.6.0 <3.0.0"
With the new version of flutter it became an error - but it can easily be fixed by updating the sdk version:
environment:
sdk: ">=2.7.0 <3.0.0"
Just don't forget to restart VisualStudio Code or whatever IDE you're using.
You are running an old version of flutter
Spreading is available starting at flutter 1.5 and dart 2.3
Run:
flutter upgrade
Here's some fix you can try out :
1) Keep the analysis_options.yaml in your root folder with this code:
analyzer:
enable-experiment:
- control-flow-collections
2) Don't use brackets {} in between your for loops
Ex:
<Widget>[
for (final category in categories)
CategoryWidget(category: category)
],
3) Important step which is probably why it's not working for you:
Change your Dart version constraint in the pubspec.yml file in your root folder to 2.5.2 or above.
environment:
sdk: ">=2.5.2 <3.0.0"
The current answer that is working in the latest Flutter 1.17.1 or Dart 2.8.2
Create a analysis_options.yaml in the directory of the pubspec.yaml file
Write this code inside the file:
include: package:pedantic/analysis_options.1.8.0.yaml
linter:
rules:
- prefer_spread_collections
For more information head to this documentation
Something completely different yet the same. Our code was built in Flutter v1.12.13hotfix9. when we did a new installation with flutter 1.17.1 the build broke with a similar error. It seems that the new release of Flutter is not backwards compatible on certain parts.
We fixed the problem by installing the older version.
Run this command from your project's root directory:
dart --enable-experiment=spread-collections lib
After updating the environment in pubspec.yml don't forget restart your IDE
environment:
sdk: ">=2.7.2 <3.0.0"
Related
Before you write me off, please consider that neither of these are answers to my question:
How to setup SDK in IntelliJ IDEA?
How do I change the IntelliJ IDEA default JDK?
In IntelliJ IDEA 2017.2.6, attempting to add JDK9 as an SDK passes but does not work as the classpaths end up empty. Steps to reproduce:
Open 'Add new SDK dialog'
(go to Project Settings > Project > Project SDK > New > JDK)
Select JDK 9
Passes, but if you look under SDK > JDK9 classpaths are empty and your code errors out due to base classes not being found. See image:
In IntelliJ IDEA 2017.3 EAP you get an error about JDK classes not being found. See images below:
Open 'Add new SDK dialog'
(go to Project Settings > Project > Project SDK > New > JDK)
Select JDK 9
Should pass, but produces error popup
Command line compilation of HelloWorld example with jdk9 works as expected.
EDIT: Found an almost-duplicate: Intellij IDEA 2017.2 can't add openjk 9 on Linux Mint 18. Key differences:
Linux version: they're using Mint 18, and I'm using Debian Stretch.
OpenJDK is the latest from the repo at the moment of writing: 9~b181-4~bpo9+1. Even though is the same version, it still does not work in my case.
EDIT: Another possible duplicate: intellij idea does not see java 9 standard classes
I did not understand the answer from the comments though. Tried setting different names for JDK (9 and 1.9) but it still did not show modules instead of classpaths and classpaths remained empty.
Current debian binary package openjdk-9-jre-headless 9~b181-4 contains incorrectly compiled lib/jrt-fs.jar file.
There are 2 filed issues separately on both idea youtrack and also ubuntu launchpad.
As it is indicated here:
Probable reason:
Classes in lib/jrt-fs.jar were compiled by Java 9 with options "-source 8"/"target 8". They should be compiled with "--release 8" option instead (or by Java 8)
A temporary workaround may be replacing /usr/lib/jvm/java-9-openjdk-amd64/lib/jrt-fs.jar with the one from Oracle JDK.
You may also try to recompile the openjdk-9 source using the advised option "--release 8".
Anyway I advice to vote up this issue on the above link to attract more attention by dev team.
Use Oracle Java instead of OpenJDK for now. You can pull that in through WebUpd8's repository.
sudo add-apt-repository ppa:webupd8team/java &&
sudo apt-get update &&
sudo apt-get install oracle-java9-installer
It doesn't look like this is going to work with OpenJDK, so if you want to play with the latest and greatest Java, this is going to be the way to do it for now. Otherwise, from what I've seen, you've done this correctly and once this gets actually fixed, it will work just fine.
I wanted to try out flutter with IntelliJ, so I followed the order of https://flutter.io/setup-macos/ and everything worked out. But today, out of nowhere, it doesn't work anymore. I can run my code, but reload and hot reload is disabled. So I'd have to close and restart everything, every time, I'd like to see a change. "flutter doctor" tells me:
IntelliJ IDEA Ultimate Edition (version 2017.2.5)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
• Dart plugin version 172.4155.35
• For information about installing plugins, see
https://flutter.io/intellij-setup/#installing-the-plugins
But I looked it up, and flutter clearly was installed. I honestly sit here for 5 hours now, trying to figure it out, but I just can't find the problem. I deleted and reinstalled Flutter, Dart and IntelliJ like 4 times now, but it didn't work either.
Flutter in generall works, at least I can run the app in the terminal, so the problem got to be with IntelliJ. I also deleted the following folders:
macOS
~/Library/Application Support/IntelliJIdeaXX
~/Library/Preferences/IntelliJIdeaXX
~/Library/Caches/IntelliJIdeaXX
~/Library/Logs/IntelliJIdeaXX
Does anyone have an idea of what I can do now?
It was reported several times recently. master is the development branch with some newer code. alpha dev (default) is the recommended channel, but there are currently issues with dev which are already fixed in master. dev will be updated soon and it's recommended to switch back to dev when the fixes have landed.
flutter channel master
to switch back later
flutter channel alpha
flutter channel dev
In case somebody is still looking for an answer for this... Jetbrains has changed the plugins directory since the 2020.x versions (2019 - 2020)
Windows:
from: %HOMEPATH%\.\config\plugins
to: %APPDATA%\JetBrains\\plugins
MacOS:
from: ~/Library/Application Support/
to: ~/Library/Application Support/JetBrains//plugins
Linux:
from: ~/./config/plugins
to: ~/.local/share/JetBrains/
To fix the problem before a flutter update, I just created a symbolic link of my plugins directory (I use mac):
ln -s /Users/xxx/Library/Application\ Support/JetBrains/IntelliJIdea2020.1/plugins /Users/xxx/Library/Application\ Support/IntelliJIdea2020.1
That did the trick for me! I hope it helps others as well :)
Cheers.
I have received an Email from Google Play Store for my Android App:
This is a notification that your com.mydomain.myapp, is built on a
version of Apache Cordova that contains security vulnerabilities. This
includes a high severity cross-application scripting (XAS)
vulnerability. Under certain circumstances, vulnerable apps could be
remotely exploited to steal sensitive information, such as user login
credentials. You should upgrade to Apache Cordova 3.5.1 or higher as
soon as possible. For more information about the vulnerabilities, and
for guidance on upgrading Apache Cordova, please see
http://cordova.apache.org/announcements/2014/08/04/android-351.html.
Please note, applications with vulnerabilities that expose users to
risk of compromise may be considered “dangerous products” and subject
to removal from Google Play. Regards, Google Play Team ©2014 Google
Inc. 1600 Amphitheatre Parkway Mountain View, CA 94043
If I try the command mentioned on the given link/page, i.e.:
cordova platform add android#3.5.1 --usenpm
I get an error:
Platform android already added
How can I upgrade Cordova from 3.1 to 3.5.1? I have tried all sort of things like:
npm update -g cordova
But I do not appear to be getting successful. The version file in MyApp\platforms\android\cordova folder still shows following entry and no file in this folder changes:
// Coho updates this line:
var VERSION = "3.1.0";
console.log(VERSION);
After some research, I think, I have found the solution here:
http://cordova.apache.org/index.html#download
npm install -g cordova
cd my_project
cordova platform update android
Running the last command does the trick and I get this response:
**cordova platform update android**
Deleting E:/PhoneGap/my_project/platforms/android/libs/cordova-3.1.0.jar
Android project is now at version 3.6.3
If you updated from a pre-3.2.0 version and use an IDE, we now require that you
import the "CordovaLib" library project.
Hope that helps.
Regards
If you are using Phonegap, you just need to update Phonegap to version 3.5.0
It's explained here:
http://phonegap.com/blog/2014/06/12/phonegap-3_5_release/
And here's the note from Phonegap that says how you're covered: http://phonegap.com/blog/2014/08/07/cordova-android-3_5_0-patched-with-security-fixes/
I have created an application for BB10 using IBM Worklight. The application version currently on production in v1.0. The application descriptor has version 1.0 for BB10.
I want to promote a new build with version 1.1. But, before releasing the build, I want to create interim builds for testing. Ex: 1.001, 1.002 and so on.
I am using antcontrib qnx.xml to package and sign blackberry 10 builds. When using this build process, the blackberry10 build fails stating: Native Packager exception occurred.
Also, from Worklight perspective, the versions that we can provide is only in format x.y. We cannot have x.y.z as the version in the application descriptor.
In such a situation, how do I fix this issue of releasing interim builds with version 1.001, 1.002 and then release the final build 1.1?
You mention an exception, but do not provide any other details such as reproduction steps. Not helpful.
What makes you think that in application-descriptor.xml you can only use x.y as the version number? I used 1.0.1 and 1.0001 w/out any issues. You'll need to better explain your issue.
<blackberry10 version="1.0.1"/>
I am trying to install cordova, I do excatly what is said in the CLI tutorial here.
After creating a new App
cordova create hello com.example.hello HelloWorld
I list all platforms and see following:
Where is other platforms liks ios? Moreover, when I try
cordova platform add android
I get following error:
What I am doing wrong or what is wrong with the Cordova?
To work, this cordova command needs to use some programs located into your sdk/tools directory. You need also have installed apache ant.
Then you must add these directories into your PATH system variable:
Background:
let's assume you have installed your Android SDK to the c:\sdk\android directory
you have installed you Apache ant to the c:\tools\apache-ant directory
Then you must create two system variables:
ANDROID_HOME with the c:\sdk\android value
ANT_HOME with the c:\tools\apache-ant value
Finally, you must modify the PATH variable and add those two to the end of the PATH' value:
;%PATH%\tools;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
NOTE: for those who uses Linux, the instruction differs a bit.
More documentation available here.