tag:blogger.com,1999:blog-16366011910775610712024-03-14T03:25:13.001-07:00Dart News & UpdatesDart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.Anonymoushttp://www.blogger.com/profile/10772415753509937045noreply@blogger.comBlogger426125tag:blogger.com,1999:blog-1636601191077561071.post-31102191480073357812019-09-10T16:14:00.004-07:002022-07-18T14:05:45.840-07:00New site for Dart news and articlesFor the latest Dart news, visit our new blog at <a href="https://medium.com/dartlang"><span style="font-family: courier;">https://medium.com/dartlang</span></a>.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-35714392816167979262018-11-15T22:42:00.000-08:002018-11-15T22:42:13.353-08:00Announcing Dart 2.1The Dart 2.1 release is now available. This update to Dart 2 offers smaller code size, faster type checks, better usability for type errors, and new language features to improve productivity when building user experiences.<br />
<br />
See our <a href="https://medium.com/dartlang/announcing-dart-2-1-improved-performance-usability-9f55fca6f31a">Medium post</a> for the full announcement.<br />
<div>
<br /></div>
<div>
<img height="360" src="https://cdn-images-1.medium.com/max/800/1*xZHP-8eEl6qJCCTKXyQZ8w.png" width="640" /></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-56718405286383553072018-08-08T10:30:00.000-07:002018-08-08T10:30:52.906-07:00Announcing Dart 2 Stable and the Dart Web PlatformThe stable release of Dart 2 is now available, including a rewrite of the Dart web platform that offers a unique combination of productivity, performance, and scalability.<br />
<br />
See our <a href="https://medium.com/dartlang/dart-2-stable-and-the-dart-web-platform-3775d5f8eac7">Medium post</a> for the full announcement.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img src="https://cdn-images-1.medium.com/max/800/1*Zf8U7ODhydytCsOn6_pQcw.png" style="margin-left: auto; margin-right: auto;" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><a href="https://hnpwa.dartlang.org/" target="_blank">hnpwa.dartlang.org</a></td></tr>
</tbody></table>
<div style="text-align: center;">
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-82858327732938310802018-07-20T13:36:00.000-07:002018-07-20T13:36:25.841-07:00Getting packages ready for Dart 2<div style="line-height: 1.38; margin-bottom: 6pt; margin-top: 18pt;">
</div>
<h3>
And making your packages look great on the Pub site!</h3>
<br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="font-family: inherit;"><span style="background-color: transparent; color: black; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We</span><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> expect the Dart 2 release to graduate to stable in the immediate future. Thus, it’s critical that you </span><span style="background-color: transparent; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration-skip-ink: none; vertical-align: baseline; white-space: pre-wrap;"><a href="https://www.dartlang.org/dart-2#migration">migrate your code</a></span><span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> — especially any packages you have published — to be Dart 2 compatible now!</span></span></div>
<span id="docs-internal-guid-92f9943f-b954-90b8-6ebd-d132c47a3f5a"><span style="font-family: inherit;"><br /></span></span>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-family: inherit;">To support this work we’ve made some enhancements to the Pub site to better show potential issues. See our <a href="https://medium.com/dartlang/getting-ready-for-dart-2-and-making-your-packages-look-great-on-the-pub-site-118464d7f59d">Medium post</a> for full details.</span></span></div>
Michael Thomsenhttp://www.blogger.com/profile/06729956303511012228noreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-90856366976499402972018-03-23T04:49:00.000-07:002018-03-23T04:49:01.647-07:00Announcing official gRPC support for Dart<span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;">gRPC is a high performance, open source RPC framework. The gRPC framework supports a </span><a class="markup--anchor markup--p-anchor" data-href="https://grpc.io/docs/" href="https://grpc.io/docs/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(rgba(0, 0, 0, 0.68) 50%, rgba(0, 0, 0, 0) 50%); background-position: 0px 1.07em; background-repeat: repeat-x; background-size: 2px 0.1em; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px; text-decoration-line: none;" target="_blank">wide range of languages</a><span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;">, and we are happy to announce that support for the Dart language is now available in beta!</span><br />
<span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;"><br /></span>
<span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;">Dart gRPC support works with the Dart SDK, version 1.24.3 or higher, and currently supports the </span><a class="markup--anchor markup--p-anchor" data-href="https://flutter.io/" href="https://flutter.io/" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(rgba(0, 0, 0, 0.68) 50%, rgba(0, 0, 0, 0) 50%); background-position: 0px 1.07em; background-repeat: repeat-x; background-size: 2px 0.1em; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px; text-decoration-line: none;" target="_blank">Flutter</a><span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;"> and </span><a class="markup--anchor markup--p-anchor" data-href="https://www.dartlang.org/dart-vm" href="https://www.dartlang.org/dart-vm" rel="nofollow noopener" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0.54); background-color: white; background-image: linear-gradient(rgba(0, 0, 0, 0.68) 50%, rgba(0, 0, 0, 0) 50%); background-position: 0px 1.07em; background-repeat: repeat-x; background-size: 2px 0.1em; font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px; text-decoration-line: none;" target="_blank">VM/Server</a><span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;"> platforms.</span><br />
<span style="background-color: white; color: rgba(0, 0, 0, 0.84); font-family: medium-content-serif-font, Georgia, Cambria, "Times New Roman", Times, serif; letter-spacing: -0.063px;"><br /></span>
See our <a href="https://medium.com/dartlang/announcing-official-grpc-support-for-dart-6c9b50357af6">Medium post</a> for full details.<br />
<div style="height: 0px;">
<br /></div>
Michael Thomsenhttp://www.blogger.com/profile/06729956303511012228noreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-60087169848002714662018-02-22T11:08:00.003-08:002018-02-22T11:08:55.631-08:00Announcing Dart 2: Optimized for Client-Side DevelopmentToday, we’re announcing Dart 2, a reboot of the language to embrace our vision of Dart: as a language uniquely optimized for client-side development for web and mobile.<br />
<br />
See our <a href="https://medium.com/@asandholm/announcing-dart-2-80ba01f43b6">Medium post</a> for the full announcement.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-f7o29_sqb7Y/Wo8VPH5g14I/AAAAAAAAIOw/yxksrWuXD6Qxk9auMKruANWRpBvE09gmwCLcBGAs/s1600/dart2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1585" height="320" src="https://4.bp.blogspot.com/-f7o29_sqb7Y/Wo8VPH5g14I/AAAAAAAAIOw/yxksrWuXD6Qxk9auMKruANWRpBvE09gmwCLcBGAs/s320/dart2.jpg" width="317" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div>
<br /></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-17532750990651472692018-01-19T12:37:00.001-08:002018-01-19T12:53:31.744-08:00Flutter plugin v21 now available -- Introducing the NEW Flutter Inspector<h2 style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre;">Flutter Inspector</span></h2>
<div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<br />
<span style="text-decoration-color: initial; text-decoration-style: initial;"></span><br />
<div style="text-align: left;">
<span style="text-decoration-color: initial; text-decoration-style: initial;">We’re very excited to be able to announce the first version of the Flutter Inspector for IntelliJ and Android Studio! It will be featured in a talk at DartConf in LA (Wednesday, Jan. 24, 10am Pacific time) and will be live streamed on the <a href="https://events.dartlang.org/2018/dartconf/" style="font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;">DartConf website</a> and on the <a href="https://www.youtube.com/user/GoogleDevelopers" style="font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline;">Google Developers channel</a> on Youtube. Be sure to watch it.</span></div>
<span style="text-decoration-color: initial; text-decoration-style: initial;">
</span><br />
<div style="text-align: left;">
<br /></div>
<span style="text-decoration-color: initial; text-decoration-style: initial;"></span><br />
<div style="text-align: left;">
<span style="text-decoration-color: initial; text-decoration-style: initial;">The inspector makes it much easier to understand why your application is rendering the way it does. It allows you to: </span></div>
<span style="text-decoration-color: initial; text-decoration-style: initial;">
</span><span style="text-decoration-color: initial; text-decoration-style: initial;"><div style="text-align: left;">
<ul>
<li>View the UI structure of your app as a tree of widgets. </li>
<li>Select a point on your device or simulator and find the corresponding Widget that rendered those pixels. </li>
<li>View properties for individual widgets. </li>
<li>Generally, better understand layout issues. </li>
</ul>
</div>
</span><span style="text-decoration-color: initial; text-decoration-style: initial;"><div style="text-align: left;">
The inspector view can be opened via View > Tool Windows > Flutter Inspector (it shows content only when an app is running). To inspect a specific widget, select the ‘Toggle inspect mode’ action in the toolbar, then click on the desired widget on the phone or simulator. The widget will be highlighted in your app’s UI, you’ll see the widget in the widget hierarchy in IntelliJ, and will be able to view the individual properties for that widget.</div>
</span><div style="text-align: left;">
<br /></div>
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"></span><br />
<div style="text-align: left;">
<div style="text-align: center;">
<span style="background-color: transparent; color: black; font-family: "arial"; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre;"><img height="370" src="https://lh5.googleusercontent.com/gIPZbI4yAKLUA-Rai2d2iU4T7bXDm4RUCMOTe_sgexJlNHciUlmuW5SHkeBGCE-aDNsy6WGnqM1FclIwRpJUEFlLKgtyj3SNQ_wG8JrSsyAktWjgwIVzlWkMWnbrjRiUAcFVxsGS" style="border: none; font-size: 11pt; transform: rotate(0rad); white-space: pre;" width="310" /></span></div>
</div>
</div>
<br />
We’re actively working in this space, including working on ways to filter the number of widgets shown in the tree view; look for more news in the coming months. Don’t hesitate to provide <a href="https://goo.gl/WrMB43">feedback</a> to us on the inspector!<br /><br />Additional inspector features and changes in the M21 release: <br /><ul>
<li>renamed the ‘Flutter’ view to ‘Flutter Inspector’ </li>
<li>normalized the Flutter Inspector toolbar icons </li>
<li>in the property view, show color properties with a color swatch </li>
<li>in the property view, show icon properties using their associated Material icons </li>
<li>fix to enable the Flutter Inspector view to display for Bazel projects </li>
</ul>
<h2>
<b> App launch and running improvements</b></h2>
We now display a notification when programs elements were successfully reloaded but not run when the view was reassembled; this is an indication that you may need to restart to see your UI changes:<br /><br /><img height="57" src="https://lh3.googleusercontent.com/O_sE_Poo2VqONDY_3gVPd7f3W_ww_Vc_uDM8cUhZYhVErBtlq8hh9B3tRTBq5eA0bV0DZ7HKYCmAC563qE7n_99d6wOBGp5Z92PrtPJ7FutqEGUejn_YqiWCKqDQLM6YsqiGSV6f" width="640" /><br /><br />Additional launch and run changes: <br /><ul>
<li>add a hyperlink for the “restart” message in the debugging console output </li>
<li>improved console hyperlinking for local files </li>
<li>ensure that an existing config is selected at startup, and fix run config autoselection for plugin projects </li>
<li>for non-Bazel projects, don't show the Flutter Bazel launch type </li>
</ul>
<h2>
Testing support improvements</h2>
<ul>
<li>fix test discovery for plugin example tests, and fix discovery of tests in example sub-directories </li>
<li>improve the pub root detection for flutter tests</li>
</ul>
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-16636433553299962202017-12-08T09:28:00.001-08:002017-12-08T09:33:58.760-08:00Flutter plugin v20 now available for Android Studio and IntelliJThe M20 release of the Flutter plugin is now available! Fixes and improvements include:<br /><ul>
<li>improved the "Open with Xcode..." logic to work better for plugin projects</li>
<li>improved flutter run console filtering</li>
<li>improvements to unit test running support</li>
<li>bug fixes to project creation in order to properly respect custom creation options (such as target language)</li>
<li>and, bug fixes to issues encountered when deleting projects</li>
</ul>
For existing users, Android Studio / IntelliJ should prompt you to update. If not, select 'Check for updates...' from the main menu. New users can install the plugin by selecting ‘Preferences’ > ‘Plugins’ and searching for ‘Flutter’ (or, see our <a href="https://flutter.io/intellij-setup/#installing-the-plugins">install instructions</a>).<br /><br />Also available is the new package site, <a href="https://pub.dartlang.org/">pub.dartlang.org</a>, which now makes it easier to find Dart packages for use with Flutter.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-71968839089527237352017-11-14T08:30:00.000-08:002017-11-14T08:30:52.318-08:00Dart Language and Library Newsletters<p>
Unless you're a member of the <a
href="https://groups.google.com/a/dartlang.org/forum/#!forum/misc">Dart misc
group</a>, you may be missing Florian Loitsch's weekly newsletters, which
started in July. They live in the SDK repo (<a
href="https://github.com/dart-lang/sdk/tree/master/docs/newsletter">docs/newsletter</a>),
but Florian also posts them in the misc group.
</p>
<p>
These newsletters cover the Dart language and some of the core libraries. Read
them to learn about existing features ("Did you know"), planned changes, and how
the Dart team considers and implements changes. For example:
</p><ul>
<li><p>The <a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/20170728.md">July
28 newsletter</a> (the first) starts with some 1.24 language changes that you
might have missed: <strong>function types</strong> and changes to
<strong>void</strong>. It also talks about the <strong>unified front
end</strong>, and what that means for language changes. Finally, the letter
lists features in active development, such as <strong>zones</strong> that work
well with strong mode, <strong>void as a type</strong>, and changes to the
<strong>core libraries</strong>.</p></li>
<li><p>The <a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/20170929.md">September
29 newsletter</a> covers 1.x <strong>JSON encoding</strong>, and plans for
<strong>fixed-size integers</strong>.</p></li>
<li><p>The <a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/20171013.md">October
13 newsletter</a> covers 1.x <strong>double.toString</strong> methods and
planned changes to <strong>evaluation order</strong>. It also describes why even
simple language and library changes require so much thought, and why they often
take so much time.</p></li>
<li><p>The <a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/20171020.md">October
20 newsletter</a> covers <strong>DateTime</strong> refactoring, pointing you to
Florian's <a
href="https://medium.com/@florian_32814/date-time-526a4f86badb">Date-Time Medium
article</a> for more details.</p></li>
<li><p>The <a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/20171027.md">October
27 newsletter</a> points you to planned <strong>library changes for Dart
2.0</strong> (<a
href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/lib/lib.md">docs/newsletter/lib/lib.md</a>).</p></li></ul>
<p>
That's just a sampling. You can find all the newsletters in the SDK repo under
<a
href="https://github.com/dart-lang/sdk/tree/master/docs/newsletter">docs/newsletter</a>.
The README for that directory lists
<a href="https://github.com/dart-lang/sdk/blob/master/docs/newsletter/README.md">what's in each article</a>.
</p>
<p>
If you'd like to be notified of new issues of the newsletter, join the <a
href="https://groups.google.com/a/dartlang.org/forum/#!forum/misc">Dart misc
group</a>. To find other ways to stay in touch, see <a
href="https://www.dartlang.org/community">Dart's community page</a>.
</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-327wfTU6O3k/WgZD0Vo6GXI/AAAAAAAAEqg/_OQMtualLLUreDn8iqwHT14WIWuq4yuVwCLcBGAs/s1600/11-03-screenshot.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-327wfTU6O3k/WgZD0Vo6GXI/AAAAAAAAEqg/_OQMtualLLUreDn8iqwHT14WIWuq4yuVwCLcBGAs/s640/11-03-screenshot.png" width="640" height="634" data-original-width="919" data-original-height="911" /></a></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-40095970436055823742017-11-13T16:01:00.002-08:002017-11-13T17:08:20.059-08:00Flutter IntelliJ plugin v19: Fit and Finish<h3>IntelliJ EAP support</h3>
<p>
This month’s release now supports the public preview release of Intellij 2017.3. With this release, you’ll get a new version of the Dart plugin. That release includes features to help you better navigate and understand large build() methods, including things like showing synthetic text ‘closing labels’ at the end of nested constructors.
</p>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<img height="315" src="https://lh4.googleusercontent.com/qETB0irTJJNbcAM-sFlWE9cSls5qmXtKTCElq-hoASF7yJmTkAPR8tX-9S840d91mP-1EVl2XYq1F1L0t5FETdGAG74GvQqLee_sL9P9YX2nmK0wKWC7NCb3n_wDpTj4sfQUs1-O" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="564" />
</div>
<br />
<h3>
Android Studio support improvements</h3>
<p>
We’ve continued to work on our Android Studio integration (first available in the last month’s release). The fixes and improvements here include:
</p>
<ul>
<li>
fixes to the language selector in the project wizard
</li>
<li>
fixes to the label on the project location directory picker
</li>
<li>
showing when a valid path is entered in the SDK field of the project wizard
</li>
<li>
displaying a warning when installing the plugin into canary builds of Android Studio 3.1
</li>
<li>
minor UI tweaks, like using consistent punctuation
</li>
</ul>
<h3>
Fit and Finish</h3>
<p>
We’ve also polished the plugin generally, and closed out many issues in:
</p>
<ul>
<li>
the hot reload integration and reload on save feature
</li>
<li>
the support for running Flutter unit tests
</li>
<li>
the new project wizard and the getting started experience, and
</li>
<li>
ensuring that Flutter-specific features aren’t exposed in non-Flutter (regular Dart) projects
</li>
</ul>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-54129452689333809742017-11-06T13:01:00.000-08:002017-11-13T17:08:57.518-08:00You are invited to DartConf Los Angeles!<p>
Tickets (for free) are available for DartConf Los Angeles on January 23 & 24th! In addition to hearing about Dart 2.0, you might also enjoy:</p>
<ul>
<li>Access to Dart, Flutter, and AngularDart engineers via office hours and unconference rooms.</li>
<li>In-depth talks about Dart, Flutter, and AngularDart, including how the latter two overlap.</li>
<li>Practical guides for Dart, Flutter, and AngularDart developers.</li>
<li>Insight into what the teams are working on and how it will affect your projects.</li>
</ul>
<p>
You might also enjoy the average high temperatures in Los Angeles for January (68°F / 20°C).</p>
<p>
Learn more and sign up at <a href="https://events.dartlang.org" target="_blank">events.dartlang.org</a>.</p>
<p>We hope to see you there!</p>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikYZsVmPPGgWHvgiJMz6OI5_YZS1VA9FQ9jQbhgTeI3_kqWmTVwuDbquoVwpbzVEbIWB4nElO-FNP2r1tWZjfe9_EDz3dPojDQvGWmwrwGXK1GYm54d3h0WGfshCVzk6wxgaPI8jHMkTKO/s1600/Screen+Shot+2017-11-06+at+10.21.04+AM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikYZsVmPPGgWHvgiJMz6OI5_YZS1VA9FQ9jQbhgTeI3_kqWmTVwuDbquoVwpbzVEbIWB4nElO-FNP2r1tWZjfe9_EDz3dPojDQvGWmwrwGXK1GYm54d3h0WGfshCVzk6wxgaPI8jHMkTKO/s320/Screen+Shot+2017-11-06+at+10.21.04+AM.png" width="500" data-original-width="600" data-original-height="734" /></a></div>Anonymoushttp://www.blogger.com/profile/10772415753509937045noreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-4497532835634665092017-10-09T16:27:00.001-07:002017-11-13T17:12:13.372-08:00Flutter IntelliJ plugin v18: Android Studio support<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Android Studio support</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">You can now install the Flutter plugin into Android Studio, and create, edit, and run your Flutter apps there. The plugin requires at least Android Studio 3.0 (currently at Android Studio 3.0 Preview beta 7). As this is the first Flutter plugin release to support Android Studio it should be considered beta; your </span><a href="https://github.com/flutter/flutter-intellij/issues" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">feedback</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> will help us improve the integration.</span></div>
<b id="docs-internal-guid-d4a77fd2-0376-7c3e-6d17-3d973526c7cf" style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="371" src="https://lh3.googleusercontent.com/GFjCghIVWAzVKCarzFG5IBAqgolfr8g2DinljvRjZYB140lSoa8lHYcPgavfi0GXQEVZL5vWx-N0nf3F56TbgT3xm6hwqfNoTrZSUgTmOK6mgj_6XUJqhW_wLn3FAL6c5f9VCW-u" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="499" /></span></div>
<b style="font-weight: normal;"><br /></b><br />
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Improved support for developing and consuming Flutter plugins</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">For this release we worked on improving the support for developing and consuming Flutter plugins. In addition to minor fixes and workflow improvements, we show referenced Flutter plugins in the ‘External Libraries’ part of the project view. From here, it’s easy to dig into the native iOS and Android implementations of a plugin, if desired.</span></div>
<b style="font-weight: normal;"><br /></b>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img height="129" src="https://lh5.googleusercontent.com/oTleoMSY8d7ryFDY97xhYWdAmjztOOlHMS1jdckI8TXVXhc0oBDxCvxYkElkKhokNHPPNFnluw1r5nTaPuLoMtt3F7EGiuGG-Vmvhbbxba5NsDGK41p84mAoXyxzR5gzq7Paibeu" style="-webkit-transform: rotate(0.00rad); border: none; transform: rotate(0.00rad);" width="336" /></span></div>
<b style="font-weight: normal;"><br /></b>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Reload on save is now the default behavior</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The ‘hot reload on save’ feature is now enabled by default. When running an app, hitting save or pressing the save keyboard shortcut will trigger a hot reload. Thanks for your feedback on this feature! We fixed the few reported issues, and added a hyperlink in the analysis issues toast to open the analysis view. You can control the setting for this feature from Languages & Frameworks > Flutter > General.</span></div>
<b style="font-weight: normal;"><br /></b>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Miscellaneous</span></h3>
<span style="font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">In addition to bug fixes, Flutter app launches now support passing in a </span><span style="font-family: Consolas; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">--flavor</span><span style="font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"> param and we’ve improved and reorganized the Flutter view's toolbar. You can see more details in the </span><a href="https://github.com/flutter/flutter-intellij/issues/1315" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline; white-space: pre-wrap;">project plan</span></a><span style="font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"> and the </span><a href="https://github.com/flutter/flutter-intellij/blob/master/resources/META-INF/plugin.xml#L25" style="text-decoration-line: none;"><span style="color: #1155cc; font-family: Arial; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline; white-space: pre-wrap;">changelog</span></a><span style="font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;">.</span>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-73402075781408548642017-09-25T10:51:00.000-07:002017-09-25T10:51:35.307-07:00Dart 2.0 pre-releases: What they mean to you<p>
If you publish Dart packages or like to use early releases of the Dart SDK, the next few months are going to be interesting, as apps and packages adapt to the <a href="https://www.dartlang.org/dart-2.0">changes required by Dart 2.0</a>. To make the process smoother, the pub tool that’s in Dart 2.0 pre-releases allows developers to download (and attempt to use) packages that don’t explicitly support Dart 2.0.
</p>
<p>
<b>The upshot:</b>
</p>
<ul>
<li> Use a <b>stable Dart SDK</b> if you need <b>reliability</b>.</li>
<li> Use a <b>pre-release Dart 2.0 SDK</b> if you’d like to <b>test</b> published packages with Dart 2.0. Report any issues you find to the package maintainer.</li>
<li> If you <b>publish packages</b>, be careful about SDK constraints, and <b>expect feedback</b> from developers trying your packages with Dart 2.0.</li>
</ul>
<p>
The <a href="https://www.dartlang.org/dart-2.0">Dart 2.0 update page</a> has all the details, but here’s an overview of what to expect, based on your development environment and the kind of code you write.
</p>
<p>
<b>If you use Flutter:</b> In the short term, your Flutter code isn’t affected. When Flutter updates its Dart SDK to a Dart 2.0 pre-release, the Flutter team will tell you how to manage your dependencies.
</p>
<p>
<b>If you use a stable Dart SDK:</b> When running <code>pub upgrade</code>, you might notice that you aren’t getting the latest releases of some packages. This might happen because the packages have versions that require a Dart 2.0 feature. Consider checking the release notes of critical packages to see whether the packages have important fixes or new features.
</p>
<p>
<b>If you use a dev channel Dart SDK:</b> When running <code>pub get</code>, <code>pub upgrade</code>, or other pub commands from a 2.0 pre-release, you might get packages that haven’t been verified to work with 2.0. If you find a package that has 2.0 issues, please report those issues immediately to the package maintainer, and let the Dart community know about any workarounds you find.
</p>
<p>
<b>If you publish packages:</b> Don’t change your already-published packages just to add SDK constraints to the pubspec. If you do need to change a package, try to make your changes backward compatible with Dart 1.x. Before publishing a package, make sure that the pubspec has correct lower and upper SDK constraints. <b>Use <2.0.0 as the upper constraint</b>, for now. Examples:
</p>
<pre>
# Works in 1.20.1+; might work in 2.0.0-dev:
sdk: '>=1.20.1 <2.0.0'
# Backward incompatible change requires at least 2.0.0-dev.1.2:
sdk: '>=2.0.0-dev.1.2 <2.0.0'
</pre>
<p>
For more information about how to adapt your code for Dart 2.0, see the <a href="https://www.dartlang.org/dart-2.0">Dart 2.0 update page</a>.
</p>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-87530740376494503962017-09-05T13:24:00.000-07:002017-09-05T14:46:48.263-07:00AngularDart 4<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSX6zg-llVpSCLuAX62HKpXraxe07vN1yc-F_gTOSeyZ_Tu_Af6Wn7BF9pP0Gp2pKkKpJXwXwRRN8soqSIVk7eqKJNyjouG_64mu3Rp_6EBxsUch0xx2jOLeZhS4Huy31oPslXNMsSgmmn/s1600/drop_the_two_with_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="220" data-original-width="569" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSX6zg-llVpSCLuAX62HKpXraxe07vN1yc-F_gTOSeyZ_Tu_Af6Wn7BF9pP0Gp2pKkKpJXwXwRRN8soqSIVk7eqKJNyjouG_64mu3Rp_6EBxsUch0xx2jOLeZhS4Huy31oPslXNMsSgmmn/s1600/drop_the_two_with_logo.png" /></a></div>
AngularDart v4 is now available. We've been busy since the release angular2
v3.1.0 in May. Not only did we "drop the 2", but we also improved the compiler
and tightened up the framework to give you smaller code, we updated the package
structure to improve usability, and we added several new features. Check out the
updated <a href="https://webdev.dartlang.org/angular">documentation</a> to get
started.
<br />
<h2>
Just angular</h2>
Upgrading to v4 will require more than updating your version constraint. The
package has changed names (back) to <strong>angular</strong> – dropping the 2.
You'll need to update your <code>pubspec.yaml</code> and the corresponding imports in your
code. In most instances, find-and-replace should do the trick. Going forward,
the package will be called <strong>package:angular</strong>. We'll just update the version
number.
<br />
<h2>
Smaller code</h2>
The updated compiler in 4.0 allows type-based optimizations that not only
improve runtime performance but generate better code because we are able to
strongly type templates. A big result of the update is that many applications
will see compiled JavaScript sizes drop. In one case, we saw a 40KB (~10%) size drop in
minified JavaScript by simply upgrading to v4. Every application is different,
but we expect most applications will experience some code size reduction.
<br />
<h2>
Separation of concerns</h2>
Until now, AngularDart was a single package that contained not only core
functionality, but also routing, forms, and testing. We've separated these
libraries into separate packages:<br />
<ul>
<li><a href="https://pub.dartlang.org/packages/angular">angular</a>
</li>
<li><a href="https://pub.dartlang.org/packages/angular_forms">angular_forms</a>
</li>
<li><a href="https://pub.dartlang.org/packages/angular_router">angular_router</a>
</li>
<li><a href="https://pub.dartlang.org/packages/angular_test">angular_test</a></li>
</ul>
The code is managed under <a href="https://github.com/dart-lang/angular">one
repository</a>, but each package can be used, versioned, and released
separately. A breaking change in <strong>package:angular_forms</strong> won't
require a breaking release of <strong>package:angular</strong>, for example.
Having clear boundaries between packages also simplifies interdependencies
between libraries, allowing dart2js to generate more efficient JavaScript.
<br />
<h2>
New features</h2>
Besides being renamed and refactored, AngularDart v4 includes a number of new
features. A couple of examples:
<br />
<strong>Functional directives</strong>. A lightweight and stateless way to apply
one-time transformations.
<br />
<pre><code>@Directive(selector: '[autoId]')
void autoIdDirective(Element element,
IdGenerator generator) {
element.id = generator.next();
}</code></pre>
<strong>Metadata inheritance</strong>. Inheritance for both component and
directive metadata is now complete! Any field- or method-level annotations are
now inherited through supertypes. Check out <a href="https://medium.com/@leonsenft/annotate-once-angulardart-825479b1e78f">Leon's
write-up</a> of this feature and how it can help you.
<br />
<h2>
Updated components</h2>
The <a href="https://pub.dartlang.org/packages/angular_components">angular_components
package</a> has also been updated to use AngularDart v4. The update contains new
components and updates for existing components. Go to the <a href="https://dart-lang.github.io/angular_components_example/">component
gallery</a> to see examples of many of the components in action.
<br />
<h2>
Jump in</h2>
To get started with AngularDart, check out the <a href="https://webdev.dartlang.org/angular">documentation</a>. Post questions to
<a href="https://stackoverflow.com/tags/angular-dart">StackOverflow</a> and <a href="https://gitter.im/dart-lang/angular">Gitter</a>. Check out the code and
file issues on our <a href="https://github.com/dart-lang/angular">GitHub
repository</a>.
Kevin Moorehttp://www.blogger.com/profile/08411979841477351623noreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-11808526344692917232017-08-31T15:54:00.000-07:002017-08-31T15:54:16.307-07:00Flutter IntelliJ plugin v17.0: Hot reload on save and improved project wizard<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Hot reload on save</span></h3>
<span id="docs-internal-guid-7481ea8f-3a7b-bcaa-c2ee-4d580c2faa2b"></span><br />
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">By request, we now support doing a hot reload on file save. On an explicit save (cmd-s / ctrl-s or File > Save All), if there’s an app currently running we will try to reload changes into that app. This integrates well with how IntelliJ’s save action works — the default behavior of the action maps to a save-all command.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img src="https://lh6.googleusercontent.com/3ozrLbKS1FPPoXQAQb2J8lQlkZkvliEog6FbQj2fpo2nrppIbqlRZpoMN9nlpTrdRq671tROu9PJ79S_LOWpMHv0N5e9GbGA1DcDmrNHN-IfiuhhjmMKbvv7dAZJsSUaSYSXul6I" style="border: none; transform: rotate(0rad);" /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">If there are analysis errors on save, instead of reloading we will highlight errors in the analysis view.</span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img src="https://lh4.googleusercontent.com/fVDNHTFzLW05JsM61Snl7V1e7nWO4Onxd2m5upuIeqv0q66TpoPmAaB5__Mbi24oxOKZ1pHCZlNAdCx8692lhQzf7L3Rz8frpmM7DLxwGPUHRyt0L1Ya3NgzUnk0JQMW4CIUQqIc" style="border: none; transform: rotate(0rad);" /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">This behavior is off by default and can be turned on in Settings > Languages & Frameworks > Flutter. </span><a href="https://goo.gl/Pab4Li" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Feedback</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> on this feature is much appreciated and will help us make additional improvements to the workflow. In particular, should we enable this feature by default?</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b id="docs-internal-guid-7481ea8f-3a7e-1b80-6679-e903f25bda04" style="font-weight: normal;"><br /></b></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Improved project wizard</span></h3>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">We’ve updated the new project wizard! You can now choose which type of Flutter project to create:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">an app,</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">a plugin project – to expose native services, or</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">a package – to create a reusable Dart library.</span></div>
</li>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">In addition, you can choose between generating a project with Java or Kotlin code, or Objective-C or Swift.</span></div>
<div>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><img src="https://lh3.googleusercontent.com/L_VkrYAMHDE2FAKPRGJM6nBLKGwLnZVCQ_X72pXH34Vh_57H98p7RXtVbhBhrQE20YredXI3xxK6uFFuf-OMcvS5v2-zdIbEkArcUrJaDkMXMU5Pnc8LvnAzSbM2aKUpjkQxDXet" style="border: none; transform: rotate(0rad);" /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><br /></span></div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">The lion’s share of this work was done by an external contributor — </span><a href="https://github.com/branflake2267" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;">Brandon Donnelson</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"> — many thanks!</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><b id="docs-internal-guid-7481ea8f-3a7e-aaf1-7de2-cd932bdde805" style="font-weight: normal;"><br /></b></span></div>
<h3 dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 700; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;">Miscellaneous</span></h3>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; margin-left: 1em; margin-right: 1em; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;"><span style="font-size: 11pt; vertical-align: baseline;">Additional changes include UI improvements to the Flutter view, fixes to icon decorations in the editor’s ruler, fixes to group handling for widget tests, and better highlighting of analysis errors when launching apps. For more detailed info on the version 17.0 release, see our </span><a href="https://github.com/flutter/flutter-intellij/issues/1248" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline;">project plan</span></a><span style="font-size: 11pt; vertical-align: baseline;">, or the </span><a href="https://github.com/flutter/flutter-intellij/blob/master/resources/META-INF/plugin.xml#L25" style="text-decoration-line: none;"><span style="color: #1155cc; font-size: 11pt; text-decoration-line: underline; vertical-align: baseline;">changelog</span></a><span style="font-size: 11pt; vertical-align: baseline;">.</span></span></div>
<div>
</div>
<div dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; text-align: left;">
</div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-92182755507039831102017-08-01T13:18:00.000-07:002017-09-25T11:02:25.837-07:00Getting your apps ready for Dart 2.0<p>One of the most important features for Dart 2.0, <a href="https://www.dartlang.org/guides/language/sound-dart" style="color:blue" target="_blank">strong mode</a>, has been available for several releases. Migrate to strong mode now to take advantage of the new sound type system that finds errors at compile time (rather than letting your users discover them). You may even find bugs that have been lurking in your code. </p>
<p>If you are using Flutter, it already uses strong mode, so you have met this requirement. </p>
<p>Strong mode is the primary breaking change for 2.0, but there are likely to be other updates. For more information, see <a href="https://www.dartlang.org/dart-2.0" style="color:blue" target="_blank">Dart 2.0 Updates.</a></p>Anonymoushttp://www.blogger.com/profile/10772415753509937045noreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-52313137695543676392017-07-31T09:49:00.001-07:002017-11-13T17:12:16.872-08:00Flutter IntelliJ plugin v16.0: Testing and app launching!<h3 dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.38; margin: 0pt 0px; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; font-weight: 700; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">New testing support</span></h3>
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">We’ve added the ability to run individual Flutter tests via actions in the editor’s gutter:</span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px; text-align: center;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; font-weight: 700; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><img height="315" src="https://lh5.googleusercontent.com/peJ957eFtvTOmMg0MIg22sa_PLvCH0KopxuEL-u0FuegJxFuzmJ1ptDUR-s-7eHR6tSyH8x30SvfZndp5qAgHGoT88r076RSMgYSNrtzxhrPlUvQ2RyLczXsoF0n4HTrX8hqyfuL" style="border: none; margin: 0px; padding: 0px;" width="640" /></span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">And now support running Flutter’s widget tests; see </span><a href="https://flutter.io/testing/#widget-testing" rel="nofollow" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration-line: none;" target="_blank"><span style="background-color: transparent; border: 0px; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">https://flutter.io/testing/#<wbr></wbr>widget-testing</span></a><span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">.</span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<h3 dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.38; margin: 0pt 0px; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; font-weight: 700; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Project structure</span></h3>
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">We re-worked how we define Flutter project and module types in IntelliJ. This addresses a few outstanding issues and will let us more easily go into more IntelliJ based products in the future. The next time you open an existing project with the new version of the plugin, you’ll see a one-time ‘module type updated’ message:</span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px; text-align: center;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2017-07-26 at 11.09.56 AM.png" height="92" src="https://lh5.googleusercontent.com/zWqppDH06EHVAOw2AvwVvcSXyXcdjq_3gdQa9G6uDnF6Y1dFvevTkZ1LGBA8pAfs7EbHX8Qj-tGUL102hIeW-t4Hj0o6mu7XM4JlpICYMQLi4tA0qEr-rldpw7gxFjaWQEUh8jyn" style="border: none; margin: 0px; padding: 0px;" width="400" /></span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<h3 dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 16px; font-weight: normal; line-height: 1.38; margin: 0pt 0px; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; font-weight: 700; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Launching improvements</span></h3>
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">This release sports several improvements to app launching:</span></div>
<ul style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; line-height: 17px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="border: 0px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Launch your app in profile and release modes (available via the ‘Run’ menu)</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; line-height: 17px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="border: 0px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Start Android emulators from the device dropdown; this requires the Android AVDs to have been already created in something like Android Studio</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; line-height: 17px; list-style-type: disc; vertical-align: baseline;"><div dir="ltr" style="border: 0px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">Tweaks to when the run and reload buttons are enabled</span></div>
</li>
</ul>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px; text-align: center;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2017-07-27 at 12.06.12 PM.png" height="71" src="https://lh4.googleusercontent.com/VnR9HgOmV_bnWQnde7tpfgwO-BJoD5IskNylcq_Kvz4ChoauOccVNoRHDgjDvlh1_qjwgoK4WRxCpPt1IiKKeErfYtb68te0iE6hJycQXNQfbWv8tUpmvYa1fOEVotwInDbE4Dle" style="border: none; margin: 0px; padding: 0px;" width="400" /></span></div>
<br style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px;" />
<div dir="ltr" style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt; padding: 0px;">
<span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">For more detailed info on the version 16.0 release, see our </span><a href="https://github.com/flutter/flutter-intellij/issues/1153" rel="nofollow" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration-line: none;" target="_blank"><span style="background-color: transparent; border: 0px; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">project plan</span></a><span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">, or the </span><a href="https://github.com/flutter/flutter-intellij/blob/master/resources/META-INF/plugin.xml#L25" rel="nofollow" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration-line: none;" target="_blank"><span style="background-color: transparent; border: 0px; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">changelog</span></a><span style="background-color: transparent; border: 0px; color: black; font-family: Arial; font-size: 11pt; margin: 0px; padding: 0px; vertical-align: baseline; white-space: pre-wrap;">. Thanks!</span></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-55627067095917659722017-07-18T08:28:00.000-07:002017-12-01T11:36:17.228-08:00Announcing DartConfWe’re <em>aflutter</em> to announce the official Dart conference in Los Angeles on January 23-24, 2018. The event will be even bigger and <br />
better than last year, with exciting talks about Dart 2.0, Flutter, Dart Dev Compiler, AngularDart, and much more.<br />
<br />
<strong>UPDATE</strong>: <a href="https://events.dartlang.org/2018/dartconf/">Please learn more and register here</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-uCJoTRc40Jw/WW4nzJXCjrI/AAAAAAAAPkc/dGm-U2G4_WEHeRw7eQGuTZ4Ders3szLwgCPcBGAYYCw/s1600/iStock-613560728%2Bcopy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-uCJoTRc40Jw/WW4nzJXCjrI/AAAAAAAAPkc/dGm-U2G4_WEHeRw7eQGuTZ4Ders3szLwgCPcBGAYYCw/s640/iStock-613560728%2Bcopy.jpg" width="640" height="276" data-original-width="1600" data-original-height="689" /></a></div><br />
We’re moving the annual conference from October to January for two reasons:<br />
<ul><li>We want our speakers to be available for the other conferences that are happening in the Fall. Each year, September to November is full of events where the team can reach developers unaware of the awesomeness of all things Dart.</li>
<li>Likewise, we don’t want you to have to choose between DartConf and other great events. Lots of new things are coming to Dart in the new year.</li>
</ul>Place: <a href="https://www.google.dk/maps/place/Google/@33.9950762,-118.4762685,15z/data=!4m5!3m4!1s0x0:0x95c465741fbb54b3!8m2!3d33.9950762!4d-118.4762685">Google Los Angeles</a><br />
Time: January 23-24, 2018<br />
Pre-registration: <a href="https://docs.google.com/forms/d/e/1FAIpQLScJjXqEuhB9_OoBNXM6LJIzWuPGy6xOgKBfh27samkFaEeE7Q/viewform?usp=sf_link">[CLICK HERE]</a><br />
<br />
The event will be live-streamed and sessions will be recorded. Ask questions at dartconf-questions@googlegroups.com.<br />
<br />
<br />
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-55684231851665978942017-06-29T13:52:00.000-07:002017-06-29T13:52:11.124-07:00Flutter IntelliJ plugin version 15.0: Improved project creation and support for flutter test<h3 id="h.76bthspcyi8x">Flutter test support!</h3><br />
We now support running and debugging ‘flutter test’ tests! Right click on your Flutter tests in the test/ directory, and choose the ‘Run’ or ‘Debug’ option:<br />
<br />
<a href="https://4.bp.blogspot.com/-m2tRJYOd83A/WVVnwiDvUrI/AAAAAAAAPgo/7Jt6wvbV7G8lASxUpW2f8WvOim8giplrQCPcBGAYYCw/s1600/image1.png" imageanchor="1" ><img border="0" src="https://4.bp.blogspot.com/-m2tRJYOd83A/WVVnwiDvUrI/AAAAAAAAPgo/7Jt6wvbV7G8lASxUpW2f8WvOim8giplrQCPcBGAYYCw/s640/image1.png" width="640" height="88" data-original-width="1024" data-original-height="140" /></a><br />
<br />
The results are displayed in the standard IntelliJ test runner. The support for this just recently landed in Flutter’s alpha channel, so you don’t see support for it in IntelliJ, you may want to run ‘flutter upgrade’. Happy testing!<br />
<br />
<a href="https://1.bp.blogspot.com/-wH4NabuAt3Q/WVVoJpy_YUI/AAAAAAAAPg0/hl7_P1JBeOg--Di5Gobjc9xWfE4DMBwEgCLcBGAs/s1600/image8.png" imageanchor="1" ><img border="0" src="https://1.bp.blogspot.com/-wH4NabuAt3Q/WVVoJpy_YUI/AAAAAAAAPg0/hl7_P1JBeOg--Di5Gobjc9xWfE4DMBwEgCLcBGAs/s640/image8.png" width="640" height="127" data-original-width="1600" data-original-height="317" /></a><br />
<br />
<h3 id="h.mlujko7lhy8m">Improved project creation</h3>When creating a new Flutter project, you now have the option of installing the Flutter SDK from the new project wizard. This will help new users get started – they can create their first Flutter project without having to make a detour to the command line. In addition, we’ve improved the error reporting on project creation failures.<br />
<br />
<a href="https://3.bp.blogspot.com/-uDSpz8HTvdo/WVVoP96jyPI/AAAAAAAAPg4/x8cHw_7ncyIUTLvduMWzOGOFKDFJIrcxQCLcBGAs/s1600/image5.png" imageanchor="1" ><img border="0" src="https://3.bp.blogspot.com/-uDSpz8HTvdo/WVVoP96jyPI/AAAAAAAAPg4/x8cHw_7ncyIUTLvduMWzOGOFKDFJIrcxQCLcBGAs/s640/image5.png" width="640" height="165" data-original-width="1093" data-original-height="282" /></a><br />
<br />
<h3 id="h.nj2cbtkmzrou">Reload feedback improvements</h3>Based on user feedback, we’ve made some improvements to the UI for hot reload. When clicking the hot reload button (or using the reload key binding), we disable the hot reload button during the course of the reload. In addition, we clear the console text at the start of a reload. These changes should help awareness of when a reload is in progress, and users will be able to better associate any error messages in the console with the most recent reload.<br />
<br />
<h3 id="h.4zzujff77e3i">Miscellaneous fixes and improvements</h3><ul><li>Added a new action to allow you to open your iOS sources in Xcode</li><li>Cleaned up and re-organized the Flutter view toolbar</li><li>Improved inspections and validations for the Flutter SDK configuration in IntelliJ</li></ul>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-5096719505421948692017-06-26T06:07:00.000-07:002017-06-26T06:07:24.693-07:00A stronger Dart for everyoneWe are constantly asking ourselves:<br />
<blockquote class="tr_bq">
How do we make developers even more productive when writing Dart apps?</blockquote>
We believe that a critical part of the answer to this question is to make <a href="https://www.dartlang.org/guides/language/sound-dart">strong</a> <a href="https://www.dartlang.org/guides/language/sound-faq">mode</a> – a sound static type system for Dart – the standard for all Dart developers.<br />
<br />
Teams that use Dart to build apps like <a href="https://www.soundtrap.com/">Soundtrap</a>, <a href="http://news.dartlang.org/2016/03/the-new-adwords-ui-uses-dart-we-asked.html">AdWords</a>, <a href="http://news.dartlang.org/2016/10/google-adsense-angular-dart.html">AdSense</a>, and <a href="https://www.youtube.com/watch?v=IMNUiC2O9M8">Greentea</a> say they really enjoy using strong mode features, such as early error detection. In fact, teams that have switched completely to strong mode cite not only early error detection but also better code readability and maintainability as major benefits. We hear this both from small teams and – even more so – from large teams with hundreds of developers writing and maintaining millions of lines of Dart code. As Björn Sperber from Soundtrap says,<br />
<blockquote class="tr_bq">
Strong mode and the smooth integration with IntelliJ is a joy to use and a huge improvement.</blockquote>
<div>
If you’ve tried out <a href="http://flutter.io/">Flutter</a>, you’ve already used strong mode checks from the Dart analyzer.<br />
<br />
Given the benefits of strong mode, and the large number of users already using it, we have decided to make strong mode the standard type system for Dart. This means that we will initiate a move to 2.0 in three phases: 1) strong mode is opt in, 2) strong mode is the default, and 3) strong mode is the only mode. We are making sure that Dart users have a smooth transition to the new type system, as explained in more detail below.<br />
<br />
Moving to strong mode also enables the use of the new Dart development compiler (<a href="https://webdev.dartlang.org/tools/dartdevc">dartdevc</a>, also known as DDC) instead of <a href="https://webdev.dartlang.org/tools/dartium">Dartium</a> for web app development. With dartdevc you get faster developer cycles and can use any recent version of Chrome – unlocking among other things the use of bleeding edge browser features. Once the developer experience with dartdevc matches that of Dartium, we’ll stop maintaining Dartium.<br />
<br />
You should continue to use <a href="https://webdev.dartlang.org/tools/dart2js">dart2js</a> to compile your final app. Where dartdevc is optimized for fast refreshes and easy debugging, dart2js is optimized for small generated code size and fast runtime of web apps.<br />
<br />
As mentioned above, to help prepare for the transition to strong mode, we’re moving to 2.0 in three phases: In the current phase (phase 1) you can opt in to strong mode and dartdevc. Phase 2 will make strong mode the default, but you'll be able to opt out. Finally, phase 3 will make strong mode the only type system for Dart, and eventually we’ll remove Dartium.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-rKWbNS-yEFo/WVEGvCch6hI/AAAAAAAAGSQ/WQ0e9w_nTpIP4O5dFYy7WLDoEZoztvFpACLcBGAs/s1600/phases%2B%25282%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="153" data-original-width="844" height="116" src="https://3.bp.blogspot.com/-rKWbNS-yEFo/WVEGvCch6hI/AAAAAAAAGSQ/WQ0e9w_nTpIP4O5dFYy7WLDoEZoztvFpACLcBGAs/s640/phases%2B%25282%2529.png" width="640" /></a></div>
<br />
We believe these changes will help you and your team be more productive when writing Dart apps. If you’d like to try out strong mode and dartdevc with your web apps, check out the <a href="http://news.dartlang.org/2017/06/dart-124-faster-edit-refresh-cycle-on.html">Dart 1.24 announcement</a> and follow the instructions in the <a href="https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#tool-changes-1">Tool Changes</a> section of the changelog. To use strong mode when building for mobile, check out <a href="http://flutter.io/">flutter.io</a>.<br />
<br />
As always, we’d love to <a href="https://github.com/dart-lang/sdk/issues/new">hear</a> about your experiences with Dart and strong mode – especially if you encounter issues when transitioning to dartdevc and our new type system.</div>
<div>
<br /></div>
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-78873025124711416402017-06-14T14:19:00.000-07:002017-06-14T14:56:38.218-07:00Unboxing Packages: A Requiem for scheduled_test<p>Long long ago in the dawning days of Dart, when <code>Future</code>s were new and <code>Stream</code>s unknown, <a href="https://github.com/munificent">Bob</a> saw the need for a package manager to bring the people together. Together he and I spun formless bits into code and wove that code into <a href="https://pub.dartlang.org/">pub</a>, which even today carries code into the eager hands of Dartisans. In those olden days, we had no modern marvels such as the twins <code>async</code> and <code>await</code>, and our tests grew heavy and graceless under the weight of their <code>chain()</code>s<a href="#fn:1" id="fnref:1" title="See footnote" class="footnote"><sup>1</sup></a>.</p>
<p>So it was that I came up with an idea for a new way of writing tests. Instead of gluing the steps together with the cumbersome <code>Future</code> API, each step would register an asynchronous callback in a queue. Once all the steps were queued up, the library would run them in order. All the API boilerplate would be hidden away from the user, and the tests would look <a href="https://github.com/dart-lang/pub/blob/85fc22001f8293793fa714ef9dbded16544cc1c2/test/pub_lish_test.dart#L53-L59">nice and clean</a>. After honing this technique on pub’s tests, I brought it out into its own package, which I called <a href="https://pub.dartlang.org/packages/scheduled_test"><code>scheduled_test</code></a>.</p>
<p>If this whole idea of queuing up tasks and running them later sounds complicated, that’s because it was. <code>scheduled_test</code> did a great job of pushing complexity away from test cases, but in return any infrastructure that ran those test cases got much more complex. You couldn’t just write normal Dart code, you had to make sure to wrap everything in <code>schedule()</code> and allow users to pass in <code>Future</code>s and all sorts of hassle. I had created a better sort of tests, but not one without flaws.</p>
<h2 id="the-beginning-of-the-end">The Beginning of the End</h2>
<p>Then in Dart 1.9, support for <code>async</code> and <code>await</code> landed and completely changed the equation. No longer did asynchronous APIs have to involve a mess of nesting and callbacks—even the most <code>Future</code>-heavy tests were free to look like plain old synchronous code with some extra keywords sprinkled on top. The driving purpose of <code>scheduled_test</code>, making asynchronous tests look simple and comprehensible, was now supported by the language itself.</p>
<p>You may then wonder, why didn’t <code>scheduled_test</code> fade into obscurity and disuse fifteen Dart versions ago? You may ask, “Natalie, when you created the new <a href="https://pub.dartlang.org/packages/test"><code>test</code> package</a>, why did you decide to use <code>scheduled_test</code> when it no longer had a purpose?” The answer to these questions is <em>infrastructure</em>.</p>
<p>Over the years we had built up a number of APIs around the core functionality of <code>scheduled_test</code>, and even when that functionality got less relevant the APIs that used it were very useful. We couldn’t migrate old code until we had a good replacement, and even for new code <code>scheduled_test</code> was still the best option for testing files and subprocesses.</p>
<h2 id="the-final-blow">The Final Blow</h2>
<p>This year<a href="#fn:2" id="fnref:2" title="See footnote" class="footnote">2</a>, one of my goals was to finally rid the world of <code>scheduled_test</code> once and for all. This meant buckling down and replacing all the infrastructure we’d built on it over the years with new packages that use nothing more than <code>dart:async</code> and the base <code>test</code> API. It took a lot of work, but I did it. I’m pleased to say that <a href="https://github.com/dart-lang/pub/pull/1629">pub no longer uses <code>scheduled_test</code></a>, <a href="https://github.com/dart-lang/test/pull/634">nor does <code>test</code></a>. These were <code>scheduled_test</code>’s biggest users, and they serve as a proof-of-concept for the suitability of its replacements:</p>
<ul>
<li><p>The <code>scheduled_test/descriptor</code> library, which provided a simple and readable API for creating and validating files and directories, is replaced by the <a href="https://pub.dartlang.org/packages/test_descriptor"><code>test_descriptor</code></a> package.</p></li>
<li><p>The <code>scheduled_test/scheduled_process</code> library, which wrapped <code>dart:io</code>’s <code>Process</code> library to provide better debugging and easier line-by-line access to the standard IO streams, is replaced by the <a href="https://pub.dartlang.org/packages/test_process"><code>test_process</code></a> package.</p></li>
<li><p>The <code>scheduled_test/scheduled_stream</code> library provided a pull-based API for streams which has been replaced by the <code>async</code> package’s <a href="https://www.dartdocs.org/documentation/async/1.13.3/async/StreamQueue-class.html"><code>StreamQueue</code></a> class, and the stream matchers have been replaced by <a href="https://github.com/dart-lang/test#stream-matchers">a suite of matchers</a> in <code>test</code> itself.</p></li>
<li><p>The <code>scheduled_test/scheduled_server</code> library, which provided a server that validates and handles individual requests, has been moved to the <a href="https://pub.dartlang.org/packages/shelf_test_handler"><code>shelf_test_handler</code></a> package.</p></li>
<li><p>The core of <code>scheduled_test</code> may be going away, but it had a few useful features that I salvaged. The <code>test</code> package can now <a href="https://www.dartdocs.org/documentation/test/latest/test/printOnFailure.html">print a message only when a test fails</a> and <a href="https://www.dartdocs.org/documentation/test/latest/test/addTearDown.html">add tear-downs at runtime</a>, both of which were originally supported in <code>scheduled_test</code> only.</p></li>
</ul>
<p>I hope these APIs can be used more widely now that they’re no longer tangled up with <code>scheduled_test</code>. In fact, I encourage you to try them out right away if they seem useful—or write your own libraries if they don’t!</p>
<div class="footnotes"><hr><ol><li id="fn:1">Fun fact: <code>Future.then()</code> used to be called <code>Future.chain()</code>! <a href="#fnref:1" title="Return to article" class="reversefootnote">↩</a></li><li id="fn:2">Excluding April and parts of March and May, when I was out recovering from surgery. I’m doing great, thanks for asking! 😊 <a href="#fnref:2" title="Return to article" class="reversefootnote">↩</a></li></ol></div>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-56755133908334714932017-06-12T16:31:00.000-07:002017-06-12T16:31:29.457-07:00Dart 1.24: Faster edit-refresh cycle on the web & new function type syntaxDart 1.24 is now available. It includes the Dart Development Compiler and supports a new generic function type syntax. <a href="https://www.dartlang.org/install">Get it now</a>!<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><iframe width="560" height="315" src="https://www.youtube.com/embed/rafSe6lqawg?rel=0" frameborder="0" allowfullscreen></iframe><br />
Figure 1: DDC debugging in Chrome.<br />
</div><br />
Some notable changes in this release:<br />
<ul><li><code>pub serve</code> now has support for the Dart Development Compiler. Unlike dart2js, this new compiler is modular, which allows pub to do incremental re-builds for pub serve.</li><ul><li>In practice what that means is you can edit your Dart files, refresh in Chrome (or other supported browsers), and see your edits almost immediately. This is because pub is only recompiling your package, not all packages that you depend on.</li><li>There is one caveat with the new compiler, which is that your package and your dependencies must all be <a href="https://www.dartlang.org/guides/language/sound-dart">strong mode</a> clean.</li><li>You can also use the new compiler to run your tests in Chrome much more quickly than you can with dart2js.</li><li><a href="https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#tool-changes-1">Read more</a> in the changelog.</li></ul></ul><ul><li>You can now publish packages that depend on the Flutter SDK to pub. Moreover, <a href="https://pub.dartlang.org/">pub.dartlang.org</a> has started tagging Flutter plugins with an icon, and there is a new landing page — <a href="https://pub.dartlang.org/flutter/plugins">pub.dartlang.org/flutter/plugins</a> — that lists all of them.</li><li>Generic function type syntax allows developers to specify generic function types everywhere a type is expected, including type annotations, return types, actual type arguments, and formal type parameter bounds. </li><ul><li>Example: <code>typedef F = List<T> Function<T>(T);</code>. </li><li>Read more in the <a href="https://gist.github.com/eernstg/ffc7bd281974e9018f10f0cb6cfee4aa">spec</a>.</li></ul></ul><ul><li>It is now type correct to have <code>void f() => ++x;</code> (functions and setter declared using <code>=></code> with return type <code>void</code> now allow the returned expression to have any type).</li><li>The deprecated ChunkedConverter class has been removed.</li><li>Dartium was updated to align with Chrome v50 (versus v45), which brings support of <code>window.isSecureContext</code> and <code>window.requestIdleCallback</code>, among other things.</li><li>As of this release, we'll show a warning when using the MIPS architecture. Unless we learn about any critical use of Dart on MIPS in the meantime, we're planning to deprecate support for MIPS starting with the next stable release.</li></ul>For more information, see the <a href="https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#1240">changelog</a>.<br />
<br />
Please <a href="https://www.dartlang.org/install">download the latest release</a> and <a href="https://www.dartlang.org/community">let us know</a> what you think!<br />
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-12832084672394751272017-05-16T17:05:00.000-07:002017-05-16T22:52:52.240-07:00What to expect at Google I/O 2017Google I/O is happening in Mountain View this week. Here’s what you shouldn't miss if you're coming, or if you're following I/O from home. <img border="0" style="display:none" src="https://4.bp.blogspot.com/-BRNXhdzcmIs/WRuUHzlVaII/AAAAAAAAPOg/rev2j1z9gsoPNatgu0oGCqgYIJnX7YNmACLcB/s1600/Screen%2BShot%2B2017-05-16%2Bat%2B17.06.28.png" /><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-WNMnmr74_OE/WRuRzIbf1EI/AAAAAAAAPOI/SBKSQsixZ6YpBdLRCanm_tKtmsp0XJiAwCLcB/s1600/emily-app-small.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-WNMnmr74_OE/WRuRzIbf1EI/AAAAAAAAPOI/SBKSQsixZ6YpBdLRCanm_tKtmsp0XJiAwCLcB/s1600/emily-app-small.gif" /></a></div><div style="text-align: center; padding: 0 4em">Figure 1: One of the Flutter apps that will be live-coded on stage. You will also be able to build it in one of the codelabs.</div><br />
<ul><li>Session: <strong><a href="https://events.google.com/io/schedule/?section=may-19&sid=fed907cf-4b51-4337-8ee0-43bca96dec08">Prototyping to Production</a></strong><a href="https://events.google.com/io/schedule/?section=may-19&sid=fed907cf-4b51-4337-8ee0-43bca96dec08">: Bridging the Gap with a Common Tool</a> by Fiona Yeung and David Yang</li>
<ul><li>Friday, 8:30am PDT</li>
<li>Design and engineering collaboration is difficult but vital for iterative user-centered product development. Join us (a designer and UI developer) as we use the Flutter UI framework to evolve a UI concept from prototype to production code. You'll leave this talk with a deeper understanding of how to bridge the gap between designers and UI developers through a prototyping-centric workflow, and why using a single framework between designers and developers helps your team work more efficiently.<br />
</li>
</ul></ul><ul><li>Session: <strong><a href="https://events.google.com/io/schedule/?section=may-19&sid=496d01fb-2139-4fd6-84b2-e585d1a20e61">Single Codebase, Two Apps</a></strong><a href="https://events.google.com/io/schedule/?section=may-19&sid=496d01fb-2139-4fd6-84b2-e585d1a20e61"> with Flutter and Firebase</a> by Emily Shack and Emily Fortuna</li>
<ul><li>Friday, 10:30am PDT</li>
<li>Create an app for both iOS and Android, without building it twice! In this presentation, you'll watch how a single developer, live on stage, uses Flutter and Firebase to build two real native apps from a single codebase. This is real! Along the way you'll learn how to build beautiful cross-platform UIs with Flutter, how you can paint your app to life with Flutter's sub-second hot reload dev experience, and how to use the Firebase SDK with Flutter.<br />
</li>
</ul></ul><ul><li><strong>5</strong> codelabs</li>
<ul><li>Intro to Dart for Java Developers (20 minutes)</li>
<li>Write a Material Design AngularDart Web App (20 minutes)</li>
<li>Build an AngularDart & Firebase Web App (25 minutes)</li>
<li>Building Beautiful UIs with Flutter (60 minutes)</li>
<li>Firebase for Flutter (70 minutes)<br />
</li>
</ul></ul><ul><li><strong>2</strong> office hours</li>
<ul><li>Flutter team: Wednesday, 4pm—5pm PDT</li>
<li>Dart and AngularDart teams: Friday, 10:30am—11:30am PDT</li>
</ul></ul>Both talks will be live-streamed (and later on YouTube), and all 5 codelabs will be available online. <br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-3rwBgxRiWO0/WRuS6nTHn5I/AAAAAAAAPOU/EhA4IXcOLUsIlOH8lwGBoD6yX5R6IhDaACLcB/s1600/startupnamer-short.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-3rwBgxRiWO0/WRuS6nTHn5I/AAAAAAAAPOU/EhA4IXcOLUsIlOH8lwGBoD6yX5R6IhDaACLcB/s1600/startupnamer-short.gif" /></a></div><div style="text-align: center; padding: 0 4em">Figure 2: Another app that you will be able to build via a codelab. This one is built with AngularDart.</div><br />
If you want to talk to the team and can’t make it to I/O, feel free to reach out to <a href="https://twitter.com/dart_lang">@dart_lang</a>, <a href="https://twitter.com/flutterio">@flutterio</a>, or <a href="https://twitter.com/AngularDart">@angulardart</a> on Twitter, <a href="https://gitter.im/dart-lang/home">Dart</a> / <a href="https://gitter.im/dart-lang/angular2">AngularDart</a> / <a href="https://gitter.im/flutter/flutter">Flutter</a> on Gitter, <a href="https://groups.google.com/forum/#!forum/flutter-dev">flutter-dev@</a> and <a href="https://groups.google.com/a/dartlang.org/forum/#!forum/misc">misc@dartlang</a> on Google Groups, <a href="https://plus.google.com/communities/114566943291919232850">+Dartisans</a> on G+, <a href="https://www.reddit.com/r/dartlang/">/r/dartlang</a> or Reddit, or use any of the <a href="https://www.dartlang.org/community">other channels</a> to reach us.<br />
<br />
Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-21464996683328099942017-05-03T15:43:00.000-07:002017-05-03T15:43:35.169-07:00AngularDart 3.0: Easy upgrade, better performanceAngularDart 3.0 is now available. It brings better performance and smaller generated code, while also making you more productive. <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-Pypqb322bLc/WQpchgDAsKI/AAAAAAAAPI4/eBaQwnDkACYglJhBuinr5YzE9x_mQ-EGgCLcB/s1600/angulardart-3.0-release.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-Pypqb322bLc/WQpchgDAsKI/AAAAAAAAPI4/eBaQwnDkACYglJhBuinr5YzE9x_mQ-EGgCLcB/s640/angulardart-3.0-release.jpg" width="640" height="335" /></a></div><br />
Version 3.0 is an evolution: although it has some breaking changes (detailed below), it is a smooth upgrade due to minimal public API adjustments. Most of the progress is under the hood—in code quality, stability, generated code size, performance, and developer experience.<br />
<br />
<strong>Code quality:</strong><br />
<ul><li><strong>2731</strong> instances of making the framework code more type safe (using <a href="https://www.dartlang.org/guides/language/sound-dart">sound Dart</a>).</li>
<li>The AngularDart framework code size is down by <strong>12%</strong>.</li>
<li>Many additional style updates to the codebase:</li>
<ul><li>Changed to use idiomatic <code><T></code> for generic methods.</li>
<li>Removed <code>NgZoneImpl</code>, all the code exists in <code>NgZone</code> now.</li>
</ul></ul><strong>Stability:</strong><br />
<ul><li>Many CSS encapsulation fixes due to update with csslib package.</li>
<li>Fixed bugs with IE11.</li>
</ul><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-lRPkkHwtb_c/WQpYCHV7ApI/AAAAAAAAPIo/vsAzPYgJPSM4AHvGsUn-H8gxcDjWQtESACLcB/s1600/image2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-lRPkkHwtb_c/WQpYCHV7ApI/AAAAAAAAPIo/vsAzPYgJPSM4AHvGsUn-H8gxcDjWQtESACLcB/s640/image2.png" width="640" height="298" /></a></div><br />
<strong>Performance:</strong><br />
<ul><li>For the Mail sample app, we see <strong>30%</strong> faster time-to-interactive (currently 3812 ms on a simulated 3G connection, measured via <a href="https://developers.google.com/web/tools/lighthouse/">Lighthouse</a>).</li>
<li>Our large app benchmark shows <strong>2x</strong> faster render times of very deep view hierarchies (65ms versus 128ms in October).</li>
<li>For <a href="https://pub.dartlang.org/packages/angular_components">AngularDart Components</a>, we see major improvements in performance. For example, the <code><material-button></code> component gets initialized <strong>1.5x</strong> faster (0.5ms versus 0.7ms in October).</li>
</ul><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-l1gkrethwfc/WQpWSRDqbdI/AAAAAAAAPIU/avIj1Vnex-wNuRFxH8TpwA9G5eQrDqKYwCLcB/s1600/image4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="311" src="https://4.bp.blogspot.com/-l1gkrethwfc/WQpWSRDqbdI/AAAAAAAAPIU/avIj1Vnex-wNuRFxH8TpwA9G5eQrDqKYwCLcB/s640/image4.png" width="640" /></a></div><br />
<strong>Generated code size:</strong><br />
<ul><li>For a small app (<a href="https://hackernoon.com/from-gwt-to-angulardart-a-case-study-with-source-code-a049ba8b6df3">GWT Mail sample app</a>), we see</li>
<ul><li><strong>3%</strong> reduction since October (2.0)</li>
<li><strong>24%</strong> reduction since August (when AngularDart went all Dart)</li>
</ul></ul><ul><li>For large apps, we see</li>
<ul><li><strong>13%</strong> reduction since October</li>
<li><strong>29%</strong> reduction since August</li>
</ul></ul><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-FdC7iLLNUaU/WQpXYacvugI/AAAAAAAAPIg/N8vVIT-3NUsmz9L3cy1s-wQ85H_hCTStQCLcB/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="560" src="https://3.bp.blogspot.com/-FdC7iLLNUaU/WQpXYacvugI/AAAAAAAAPIg/N8vVIT-3NUsmz9L3cy1s-wQ85H_hCTStQCLcB/s640/image1.png" width="640" /></a></div><br />
<strong>Developer experience</strong>:<br />
<ul><li>Simplified API</li>
<ul><li>Simpler <code>onPush</code> change detection using <code>ComponentState</code> and <code>setState</code>.</li>
<li>Only one <code>load</code> method (instead of <code>loadAsRoot</code>, <code>loadAsRootIntoNode</code>).</li>
<li>Got rid of <code>TitleService</code>, use idomatic <code>document.title</code> instead.</li>
<li>Removed <code>viewBindings</code> (use <code>viewProviders</code>).</li>
<li><code>ngSwitchCase</code> replaces the soft deprecated <code>ngSwitchWhen</code>.</li>
<li><code>XHR</code> is deprecated.</li>
<li><code>EventEmitter</code> is deprecated: use the idiomatic <code>Stream</code> and <code>StreamController</code> instead.</li>
<li>Removed <code>IterableDifferFactory</code>.</li>
<li>A name parameter is now required for all <code>@Pipe(...)</code> definitions: <code>@Pipe(name: 'uppercase')</code> is replaced by <code>@Pipe('uppercase')</code>.</li>
<li><code>null</code> is no longer propagated as an initial change value. Fields must start with a non-null value.</li>
<li>Removed <code>NgPlural</code>; use the much more dart-y <code>package:intl</code> instead.</li>
</ul></ul><ul><li>Catching bugs earlier</li>
<ul><li>selector is now a <code>@required</code> property.</li>
<li><code>ngIf</code> throws if the bound value changes during change detection.</li>
<li>In generated <code>.template.dart</code> change detected primitives are typed.</li>
</ul></ul><ul><li>Testing</li>
<ul><li><code>package:angular_test</code> with improved <code>NgTestBed</code>.</li>
</ul></ul><ul><li>Dev mode tweaks</li>
<ul><li>New <code>isDebugMode</code> function.</li>
<li>Warning when Dartium is run without checked mode.</li>
<li>By default, the <code>ExceptionHandler</code> is a <code>BrowserExceptionHandler</code> which prints to console. You can override it if you don't want this behavior (for example, when releasing to production).</li>
</ul></ul>You can find more information in the <a href="https://github.com/dart-lang/angular2/blob/master/CHANGELOG.md">changelog</a>.<br />
<br />
AngularDart 3.0 is production ready, and already used at Google by very large apps like AdWords and AdSense. <a href="https://pub.dartlang.org/packages/angular2">Upgrade today</a> to make your apps smaller, faster, and more reliable!Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1636601191077561071.post-68591627569184407312017-04-21T07:17:00.003-07:002017-04-21T07:17:47.840-07:00Dart 1.23: Better strong mode supportDart 1.23 is now available. It introduces support for overriding fields in strong mode and a lot of other improvements. <a href="https://www.dartlang.org/install">Get it now</a>!<br />
<br />
<div style="text-align: center;">
<span id="docs-internal-guid-22eaf991-90df-cfc5-3eb2-7d40bc8b8526"><span style="font-family: Arial; font-size: 11pt; vertical-align: baseline; white-space: pre-wrap;"><img alt="Screen Shot 2017-04-21 at 16.15.20.png" height="215" src="https://lh3.googleusercontent.com/TK_ss6MTroxvqxsSLgGBMUtXOUlsufjHrJx-A5frQgT2a64k6kyh6Y4P3CCaF_W05-Q01KVRS_70mj9s4CNHn816_a9N3o_-Cpg_YbJlsSV53_vgEHJ8oijpY4iXOO8h6Jvucsij" style="border: none; transform: rotate(0rad);" width="537" /></span></span></div>
<div style="text-align: center;">
<span id="docs-internal-guid-22eaf991-90e0-0811-4a75-d35a622e61b0"><span style="font-family: Arial; font-size: 11pt; font-style: italic; vertical-align: baseline; white-space: pre-wrap;">Figure 1: Overriding fields in strong mode</span></span></div>
<br />
We have been spending a lot of our time on our unified front-end (explained by Vyacheslav Egorov in <a href="https://youtu.be/lqE4u8s8Iik?t=14m42s">this short talk</a> from the Dart Developer Summit). We're also doing a lot of work to support our critical customers (for example, Flutter gets better Windows support with this release) and solidifying <a href="https://www.dartlang.org/guides/language/sound-dart">strong mode</a>.<br />
<br />
Some notable changes in this release:<br />
<ul>
<li>Overriding fields is now supported in strong mode. You don’t need to tag them with <code>@virtual</code> anymore.</li>
<li>Strong mode inference error messages are more helpful. </li>
<li>Strong mode now prefers the expected type to infer generic types, functions, and methods.</li>
<li>The <a href="https://api.dartlang.org/stable/1.22.1/dart-core/UriData/parse.html">UriData.parse</a> method now normalizes and validates its input better.</li>
<li>Importing <code>dart:io</code> is now allowed in the browser, as a stopgap measure to make it easier to write libraries that share code between platforms (like package <code>http</code> that needs to run in the browser, on mobile, and on the command line).</li>
<li><code>pub publish</code> now warns you when you’re importing a package that is not a direct dependency in <code>pubspec.yaml</code>.</li>
<li><code>pub get/upgrade</code> now produces a more informative error message for Flutter.</li>
<li><code>dartfmt</code> now makes precedence of cascades more visible, and adds other small formatting tweaks.</li>
<li>Fixes for Unicode character printing in the Windows console, inconsistencies between <code>dartanalyzer</code> and the analysis server in finding the options file, pub “UID too large” errors on OS X, and more.</li>
</ul>
For more information, see the <a href="https://github.com/dart-lang/sdk/blob/master/CHANGELOG.md#1230">changelog</a>.<br />
<br />
Please <a href="https://www.dartlang.org/install">download the latest release</a> and <a href="https://www.dartlang.org/community">let us know</a> what you think!Unknownnoreply@blogger.com