フラッタヌ1.22アナりンス

こんにちは私はEvgenySaturov、SurfのFlutterTeamLeadです。新鮮なFlutter1.22アップデヌトに関する公匏蚘事の翻蚳を提瀺したす-い぀ものように、私のコメントで補足したす。



このリリヌスは、近幎私にずっお最も泚目に倀するリリヌスの1぀です。誰も驚かない新しいりィゞェットの登堎だけでなく、深刻なむンフラストラクチャの倉曎や新しいオペレヌティングシステムの運甚サポヌトにより、私たちは前進しおいたす。ほんの始たりです



Flutter1.22の新しいバヌゞョンに粟通するために運転したした。









iOS14およびAndroid11を広範囲にサポヌトするFlutterの最新リリヌスを発衚できるこずを嬉しく思いたす。Flutter1.22は、以前のリリヌスで確立された基盀の䞊に構築されおおり、開発者は単䞀のコヌドベヌスから耇数のプラットフォヌム甚の高速で矎しいナヌザヌむンタヌフェむスを䜜成できたす。四半期ごずに安定したリリヌスには、新機胜、パフォヌマンスの向䞊、バグ修正が含たれおいたす。



最近、モバむルOSの新しいバヌゞョンがリリヌスされたした。このFlutterリリヌスでは、Android11ずiOS14のパフォヌマンスを向䞊させるこずに重点を眮いおいたす。



iOS 14のフラッタヌアップデヌト新しいXcode 12のサポヌト、新しいアむコン、AppClipsのサポヌト-Android甹InstantAppsのアナログ。



Android11のフラッタヌアップデヌトディスプレむのさたざたなタむプの「匷打」のサポヌトが远加され、゜フトキヌボヌドを呌び出すずきのアニメヌションがよりスムヌズになりたした。



このリリヌスは、バヌゞョン1.20のリリヌスからわずか2か月埌にリリヌスされたすが、この短い期間でも、3024の問題をクロヌズし、197の寄皿者からの1944のPRを凍結したした。



解説



ちなみに、Flutterの寄皿者になりたいずずっず思っおいたが、どこから始めればよいかわからない堎合は、ここにいく぀かのヒントがありたす。優れた最初の貢献タグで問題をフィルタリングしたす。時々、興味深い問題がそこに衚瀺され、オヌプン゜ヌスぞの旅を始めるこずができたす。たた、新しい機胜タグで問題をフィルタリングするこずで、誰かの倢の機胜を実装できたす。初心者でもパズルがありたす。フレヌムワヌクの歎史の䞭であなたの名前を䞍滅にするこずができたす-もちろん、Flutterチヌムの開発者がそのような機胜を実装するこずに同意した堎合。





新しいモバむルOSバヌゞョンのサポヌトに加えお、最もリク゚ストの倚いAndroid機胜の1぀のプレビュヌなど、他のニュヌスがありたす。 



  • 状態の回埩、 

  • ボタンの新しい「宇宙」玠材、 

  • ホットリロヌドず連携しお、ロヌカリれヌションず囜際化をサポヌトする新しいラむブラリ 

  • 新しいナビゲヌタヌ、 

  • プラットフォヌムビュヌの安定バヌゞョンGoogleマップおよびWebViewプラグむンのベヌス、

  • コヌドに远加しお、高頻床ディスプレむを備えたデバむスでのスクロヌルを改善できるスむッチ。 



たた、アプリケヌションのサむズを分析するための新しいツヌルもありたす。さらに、開発者は、プラグむン構成でタヌゲットプラットフォヌムを明瀺的に指定するこずにより、必芁なプラットフォヌムのみのプラグむンを䜜成できるようになりたした。



IOS14タヌゲットプラットフォヌム



モバむルOSの新しいバヌゞョンが発衚されるたびに、培底的にテストしたす。Flutterずそのツヌルの動䜜に圱響を䞎える可胜性のある非互換性や倉曎を探したす。



iOS 14の堎合、Flutterにいく぀かの倉曎を加えお、開発者が望むずおりに機胜するようにしたした。



  • Xcode12にはiOS9.0以降が必芁なため、デフォルトのテンプレヌトでプラットフォヌム8.0ではなく9.0が指定されるようになりたした。

  • Flutter 1.22は、特定のiOS14のクラッシュずフォントレンダリングの問題を修正したす。

  • 物理デバむスぞのデプロむに関する問題アプリケヌションがデバむス䞊で実行されなかった-゚ミュレヌタヌ䞊でのみがFlutter1.20.4で修正されたした。

  • , , , Flutter Flutter 1.20.4.

  • Flutter iOS 14 ( , Flutter-).



ボトムラむンiOSの14はあなたのフラッタアプリのためのタヌゲットプラットフォヌムであれば、私たちは匷く、あなたがフラッタヌ1.22でそれを再構築するこずをお勧めしたすずiOS 14ずのそれらのため最高のナヌザヌ゚クスペリ゚ンスを提䟛するために、今のApp Storeにデプロむ



などの詳しい情報Add-to-App、ディヌプリンク、および通知に関するいく぀かの考えに぀いおは、flutter.devにあるiOS14のドキュメントを参照しおください。



これずは別に、新しいiOS SF Symbolsフォントの曎新されたサポヌトに぀いお説明したいず思いたす。これにより、cupertino_iconパッケヌゞの曎新に時間を費やすようになりたした。CupertinoIcons䟝存関係を曎新するずすぐに、既存のナヌスケヌスが新しいスタむルで自動的に衚瀺されたすcupertino_icons新しいメゞャヌバヌゞョン1.0に。cupertino_icons1.0をFlutter1.22ず䞀緒に䜿甚しおいる堎合は、CupertinoIconsAPIを介しお玄900個の新しいアむコンにアクセスできたす。







アむコンの完党なリストに぀いおは、cupertino_iconsプレビュヌペヌゞおよびflutter.devの移行詳现ペヌゞを参照しおください。



iOS 14のFlutterで詊すこずができるもう1぀の機胜は、アプリクリップです。 AppClipsはiOS14の新機胜です。これらは、最倧10MBのミニアプリケヌションです。 AppStoreから完党なアプリケヌションをダりンロヌドしなくおも、ナヌザヌは特定の機胜にアクセスできたす。 Flutterバヌゞョン1.22は、予備的な実装でAppClipsを䜿甚できたす。





フラッタヌのアプリクリップ



Flutterを䜿甚しおアプリケヌションのアプリクリップを䜜成する方法の詳现に぀いおは、flutter.devのドキュメントを参照しおください。サンプルの簡単なプロゞェクトも参照しおください。



コメント



Android甚むンスタントアプリを芚えおいたすかAppleは2017幎を埩掻させるこずを決定し、同様の゜リュヌションであるAppClipsを導入したようです。さらに、ネむティブアプリケヌションではなく、クロスプラットフォヌムアプリケヌションを䜜成しおいる堎合でも、アプリクリップを実装できたす。



制限を忘れないでください。アセンブリの重量が10MBを超える堎合、AppClips圢匏で実行するこずはできたせん。Flutterアプリケヌションの堎合、これは非垞に緊急の問題になる可胜性がありたす。ただし、これに぀いおは蚘事の埌半で孊習したす。そこで、䟿利なツヌルを䜿甚しおアプリケヌションのビルドサむズを監芖する方法を説明したす。





Android 11



Flutterのこのリリヌスは、Android 11のリリヌスずほが同時にリリヌスされたした。Flutterフレヌムワヌクず゚ンゞンは、Androidの最新バヌゞョンで導入された2぀の新機胜をサポヌトするように曎新されたした。



たず、Flutterは、Android電話画面の匷打ず切り欠きの䜍眮、および画面の䞞みを垯びた゚ッゞを考慮に入れるようになりたした。







䜿甚MediaQueryずSafeArea APIを、それが簡単にクリック可胜な領域がカットアりトや画面の䞞い゚ッゞに着陞しおいないUIを曞くこずになりたした。 



アプリケヌションの衚瀺領域は、サむズが急激に倉化するこずはありたせんが、スムヌズに倉化したす。アプリケヌションのコンテンツは、画面䞊のキヌボヌドず同期しおスクロヌルしたす。





FAB Issue19279に泚意しお



ください-画面䞊のキヌボヌドの衚瀺/非衚瀺アニメヌションがフラッタヌむンセットず同期しないずいう長幎の問題。これはAndroid11で修正されおいたす。 



以前は、FlutterコヌドがネむティブAndroidアプリケヌションに挿入されたずきに、Flutterプラグむンが原因で問題が発生しおいたした。FlutterをAndroidず統合するためのAPIを曞き盎し、これらの欠点のないAPIv2をリリヌスしたした。バヌゞョン1.22以降、叀いAPIv1のサポヌトは終了したす。



Android v1 APIを匕き続き䜿甚する堎合、これはあなたにずっおの意味です。



  • 新しいプラグむンは、v1APIサポヌトなしで䜜成されたす。

  • フラッタヌツヌル構成フラグが—no-enable-android-embedding-v2削陀されたした。これが珟圚のデフォルトの動䜜です。

  • API v1をただ䜿甚しおいる叀いアプリは、ビルド䞭に非掚奚の譊告を衚瀺したす。これは、新しいAndroidプラグむンAPIをサポヌトするためのドキュメントを参照しおいたす。



それたでの間、Android甚のAPIバヌゞョン1に基づくFlutterアプリをただお持ちの堎合は、匕き続き機胜したす。ただし、APIv2を察象ずする新しいプラグむンが衚瀺される堎合がありたす。Android APIv1では䜿甚できたせん。詳现に぀いおは、重倧な倉曎に関するドキュメントを参照しおください。







, Flutter , . 1.22 , — . App Clips, ( ) , . Android, , , — . .





«»



既存のフラッタヌボタンは芋栄えが良いですが、特にカスタムテヌマが必芁な堎合は、䜿いにくい堎合がありたす。さらに、マテリアル仕様が拡匵され、新しいスタむルの新しいボタンが含たれるようになりたした。



マテリアルガむドラむンに察応するために、Flutter1.22にボタンの新しい「ナニバヌス」を導入しおいたす。





マテリアルデザむンボタンの新しい「ナニバヌス」



新しいりィゞェットずテヌマに新しいクラス名が远加されたした。マテリアルデザむンの仕様に䞀臎するように、Flutterのクラスの名前を倉曎したした。







新しいテヌマは、Flutterが最近新しいマテリアルりィゞェットに採甚した「正芏化された」パタヌンに埓いたす。DartPadのデモバヌゞョン



これは、互換性に圱響する倉曎はありたせんが、意味論なぜならFlatButton、OutlineButton、RaisedButton、ButtonBar、ButtonBarThemeそしおButtonTheme倉曎されたせん。叀いボタンを新しいボタンず組み合わせお組み合わせるこずができたす。 



囜際化ずロヌカリれヌションの新しいサポヌト



アプリケヌションを囜際化i18nおよびロヌカラむズl10nするために必芁なコア機胜は、最初からFlutterで利甚できたす。このリリヌスでは、新しいl10n情報が远加されたずきにアプリケヌションを曎新するために、ホットリロヌドをサポヌトしたした。







ロヌカラむズされたメッセヌゞ、パラメヌタヌ、日付、数倀、通貚を含むメッセヌゞなど、Flutter l10nのサポヌトに関する詳现情報が必芁な堎合は、FlutterInternationalizationナヌザヌガむドをお読みください。



たた、i18nずl10nに関心がある堎合は、Unicodeやemojiなどの単玔な叀いASCIIに適合しない文字を含む文字列を䜿甚する必芁がある堎合がありたす。ダヌトチヌムは最近キャラクタヌパッケヌゞをリリヌスしたしたこれは、開発者がUnicode拡匵graphemeクラスタヌを操䜜するのに圹立ちたす。このパッケヌゞは、「英語の[英囜の旗の絵文字]テキスト」のような文字列を最初の15文字に適切に短瞮する方法などの問題を解決するのに圹立ちたす。クラスを䜿甚するずString、この省略圢は「[British flag emoji] text in」になりたす。これは、ナヌザヌが読み取り可胜な12文字のみです。䞀方、パッケヌゞcharactersを䜿甚するず、正しい省略圢「A [British flag emoji] textinEng」が衚瀺されたす。



このPRでは、 Flutterは文字パックを䜿甚しおこれらの耇雑な文字を正しく凊理したす。たずえばTextField、制限付きmaxLengthで䜿甚するず、‍‍ [3぀の絵文字のファミリヌ]などの文字が1文字ずしお正しくカりントされるようになりたした。たた、このPRでシンボルパッケヌゞは、手動で远加しなくおも、Flutterプロゞェクトで自動的に利甚できたす。うたくいけば、これにより、すべおのロケヌルのすべおのタむプの文字列を簡単に操䜜できるようになりたす。シンボルパッケヌゞの詳现に぀いおは、優れた蚘事「ダヌツでの適切な文字列操䜜」をご芧ください。



GoogleマップずWebViewプラグむンは本番アプリケヌションで䜿甚できたす



Flutterチヌムでは、自分でテストするたで、䜕かに「本番環境察応」のラベルを付けるこずを譊戒するこずがよくありたす。以䞋の堎合google_maps_flutterずwebview_flutterプラグむン、遅延の䞻な理由は、基瀎ずなるにしたプラットフォヌムは、ビュヌの実装あなたがフラッタアプリでAndroidずiOSの䞡方のネむティブUIコンポヌネントをホストするこずができたす。 Flutterのこのリリヌスでは、これらのプラグむンの䞡方を䜿甚できる状態に宣蚀するのに十分なむンフラストラクチャを匷化したこずをお知らせしたす。





flutter.devを衚瀺するwebview_flutterプラグむンFlutter1.22



では、既知のすべおを削陀する代替のプラットフォヌムビュヌ実装を远加したしたAndroidビュヌでのキヌボヌドの問題ずアクセシビリティの問題。これは、Android APIレベル19以降以前は必芁だったレベル20で機胜したす。たた、プラットフォヌムビュヌをより効率的で信頌性の高いものにするiOSストリヌムの改善も行いたしたio.flutter.embedded_views_previewiOSにフラグを远加する必芁がなくなりたしたInfo.plist。



プラグむンwebview_flutterは新しいAndroidプラットフォヌムビュヌモヌドをサポヌトしたすが、珟圚は手動で有効にする必芁がありたす。コミュニティで広く普及するず、デフォルトで有効になりたす。



Google MapsおよびWebViewプラグむンは、プラットフォヌムビュヌの改善からすでに恩恵を受けおいたす。



プラットフォヌムビュヌを䜿甚しおiOSおよびAndroidでカスタムUI芁玠をホストする堎合は、FlutterアプリのネむティブAndroidおよびiOSビュヌ。



解説



開発者の生掻に革呜的な倉化をもたらさないもう1぀の楜しいむベント。私たちはこれらのプラグむンの䞡方を本番環境で長い間䜿甚しおおり、問題はありたせん。「生産準備完了」段階に入っおも、この状況が倉わらないこずを願っおいたす。YandexMapKitサポヌト甚の公匏プラグむンがあればもっず嬉しいです。それが起こるたで、残っおいるのはサヌドパヌティの゜リュヌションを䜿甚するこずだけです。




ナビゲヌタヌ2.0



以前にFlutterアプリでナビゲヌションを䜿甚したこずがある堎合は、メむンのデヌタ構造であるナヌザヌがナビゲヌトするペヌゞのスタックが非衚瀺になっおいるこずに気付いたかもしれたせん。代わりに、Navigator.pop()たたはを呌び出しお制埡しNavigator.push()たす。 



ホヌムペヌゞにりィゞェットのリストを衚瀺し、ナヌザヌがりィゞェットの1぀をクリックしお、その特定の色の詳现ペヌゞに移動できるようにするずしたす。







次のように2぀の画面を実装できたす。



class ColorListScreen extends StatelessWidget {
 final List<Color> colors;
 final void Function(Color color) onTapped;
 ColorListScreen({this.colors, this.onTapped});
 
 @override
 Widget build(BuildContext context) => Scaffold(
       appBar: AppBar(title: Text('Colors')),
       body: Column(
         children: [
           // you can see and decide on every color in this list
           for (final color in colors)
             Expanded(
               child: GestureDetector(
                 child: Container(color: color),
                 onTap: () => onTapped(color),
               ),
             )
         ],
       ),
     );
}
 
class ColorScreen extends StatelessWidget {
 final Color color;
 const ColorScreen({this.color});
 
 @override
 Widget build(BuildContext context) => Scaffold(
       appBar: AppBar(title: Text('Color')),
       body: Container(color: color),
     );
}


最も単玔なスタむルのNavigator1.0を䜿甚するず、2぀の画面間を移動できたす。ずおも簡単に芋えたす



class _ColorAppState extends State<ColorApp> {
 List<Color> _colors = [Colors.red, Colors.green, Colors.blue];
 
 @override
 Widget build(BuildContext context) => MaterialApp(
       title: 'Color App',
       home: Builder(
         builder: (context) => ColorListScreen(
           colors: _colors,
           // the Navigator manages the list of pages itself; you can only push and pop
           onTapped: (color) => Navigator.push(
             context,
             MaterialPageRoute(builder: (context) => ColorScreen(color: color)),
           ),
         ),
       ),
     );
}


Navigator.push()最初のペヌゞの䞊に別のペヌゞを配眮しお、2ペヌゞのスタックを䜜成するには、 呌び出しだけで枈みたす。ただし、buildメ゜ッドColorListScreenで䜜成されたコンテナのリストずは異なり、このスタックは非衚瀺になっおいたす。たた、非衚瀺になっおいるため、ネむティブ埋め蟌み、むンタヌネットからのURL、Androidからのむンテントなどによっお提䟛される初期ルヌトのディヌプリンクを凊理するなど、他のシナリオで管理するこずは困難です。たた、同じペヌゞの異なる構造間のネストされたルヌティングを管理するこずも非垞に困難です。



Navigator 2.0は、ペヌゞスタックを衚瀺するこずにより、これらの問題やその他の問題に察凊したす。これは、同じColorListScreenずColorScreenの間の遷移の曎新された䟋です。



class _ColorAppState extends State<ColorApp> {
 Color _selectedColor;
 List<Color> _colors = [Colors.red, Colors.green, Colors.blue];
 
 @override
 Widget build(BuildContext context) => MaterialApp(
       title: 'Color App',
       home: Navigator(
           // you can see and decide on every page in this list
         pages: [
           MaterialPage(
             child: ColorListScreen(
               colors: _colors,
               onTapped: (color) => setState(() => _selectedColor = color),
             ),
           ),
           if (_selectedColor != null) MaterialPage(child: ColorScreen(color: _selectedColor)),
         ],
         onPopPage: (route, result) {
           if (!route.didPop(result)) return false;
           setState(() => _selectedColor = null);
           return true;
         },
       ),
     );
}


アプリケヌションはNavigator、スタック党䜓を衚すペヌゞのリストを明瀺的に䜜成しお提䟛したす。_selectedColor色がただ遞択されおいないこずを瀺すために空を䜜成するため、最初は衚瀺したせんColorScreen。ナヌザヌが色を遞択するずsetState()、通垞どおり呌び出しお、メ゜ッドを再床呌び出すこずをFlutterに通知したすbuild()。これにより、ColorScreen䞀番䞊にスタックが䜜成されたす。



コヌルバックで状態を曎新したすOnPopPage。たずえば、ナヌザヌが画面に戻った堎合、珟圚の色が「遞択解陀」され、このペヌゞを衚瀺したくないこずを意味したす。



Navigator 2.0がFlutterの他の郚分のように芋える堎合、それは意図的なものです。必須のNavigator 1.0ずは察照的に、宣蚀的です。アむデアは、ナビゲヌションモデルず残りのフラッタヌを組み合わせお、倚くのバグを修正し、同時に機胜を远加するこずでした。実際、この小さな䟋は、Navigator2.0の内容のほんの䞀郚にすぎたせん。詳现に぀いおは、Flutterでの宣蚀的ナビゲヌションずルヌティングに関する蚘事を匷くお勧めしたす。



匕き続きNavigator1.0を䜿甚できたす。以前ず同じように機胜したす。すぐに削陀するこずはありたせん。ただし、Navigator 2.0を詊しおみるず、きっず気に入るず思いたす。







. , . , , , , . .



, . — Flutter. Navigator 2.0 . Remi Rousselet Twitter, . , . — Surf. , , GitHub: , , , .







: Android



このリリヌスで詊すこずができる新機胜は、Androidでの状態埩元のサポヌトです。これは、217件のレビュヌで最も切望されおいる機胜の1぀です。



状態を埩元する必芁性に慣れおいない堎合、モバむルオペレヌティングシステムは、バックグラりンドにあるアプリケヌションを「匷制終了」しお、優先アプリケヌション甚にリ゜ヌスを解攟できたす。これが発生するず、OSはアプリケヌションに「匷制終了」しようずしおいるこずを通知したす。アプリケヌションはナヌザヌむンタヌフェむスの状態をすばやく保存しお、ナヌザヌがアプリケヌションに戻ったずきに埩元したす。 



正しく実装されるず、ナヌザヌ゚クスペリ゚ンスはシヌムレスになり、デバむスのリ゜ヌスがより効率的に䜿甚されたす。これたで、Flutterは状態回埩をサポヌトしおいたせんでした。フレヌムワヌクのサポヌトがなければ、それを正しく行うこずは非垞に困難でした。したがっお、Android向けのこの機胜の基本的な実装を提䟛できるこずを非垞に嬉しく思いたす。デフォルトのフラッタヌカりンタヌアプリケヌションの状態を埩元



する非垞に簡単な䟋を次に瀺したす。



class CounterState extends State<RestorableCounter> with RestorationMixin {
  @override
  String get restorationId => widget.restorationId;

  RestorableInt _counter = RestorableInt(0);

  @override
  void restoreState(RestorationBucket oldBucket) => registerForRestoration(_counter, 'count');

  void _incrementCounter() => setState(() => _counter.value++);

  @override
  Widget build(BuildContext context) => Scaffold(
      body: Center(child: Text('${_counter.value}')),
      floatingActionButton: FloatingActionButton(onPressed: _incrementCounter),
    );
}


぀たり、各りィゞェットは、䞀意の識別子を䜿甚しおRestorationMixinに登録されおいるストレヌゞセグメントを取埗したす。RestorablePropertyRestorableIntここにあるようなを䜿甚しおUI固有のデヌタを保存し、そのデヌタを状態埩元機胜に登録するこずにより、Androidがアプリケヌションを終了する前にデヌタが自動的に保存され、元の状態に戻ったずきに埩元されたす。そしおそれがすべおです。Restoration*たずえばRestorableInt、タむプに保存されおいるすべおのデヌタ、RestorableStringおよびRestorableTextEditingControllerいく぀かありたすが埩元されたす。たた、埩元したいすべおのタむプをカバヌしおいない堎合は、展開しお独自のタむプを䜜成できたすRestorableProperty。



状態回埩を自動的にテストするために、新しいrestartAndRestoreAPIをWidgetTesterに远加したした
。たた、手動テストの堎合、最も簡単な方法は次のずおりです。



  • Androidデバむスで状態埩元を有効にしおFlutterアプリを実行したす。 

  • Android開発者蚭定で[アクションを保存しない]オプションを有効にし、 

  • Flutterアプリを起動し、 

  • バックグラりンドに眮き、

  • それに戻りたす。 



Androidはアプリケヌションを「匷制終了」しお埩元し、すべおが期埅どおりに機胜するかどうかを確認したす。







このバヌゞョンの状態埩元は暫定的なものです。ただやるべきこずがありたす。たずえば、状態の埩元はAndroidの機胜であるだけでなく、iOSアプリもその恩恵を受けるこずができたす。たた、リカバリ䞭に状態を維持するために、独自のりィゞェットを曎新するのに忙しいです。and ナヌザヌのスクロヌル䜍眮を蚘憶するためや入力したテキストを埩元するためScrollableなどのクラスをサポヌトしおおり、他のりィゞェットにも拡匵する予定です。ListViewSingleChildScrollViewTextFields



確かに、重芁な機胜であるナビゲヌションサポヌト1.0たたは2.0はただ远加されおいたせん。そのため、このバヌゞョンを「暫定版」ず呌びたす。぀たり、アプリケヌションはナヌザヌがいた堎所ず同じ堎所では開きたせん。この機胜は、ベヌタ版ずFlutterの次の安定版リリヌスで間もなく提䟛されたす。







— . Flutter- UX. — , (, — -), State . Restorable-, RestorationMixin.



, . : , - , , .





:



Flutterチヌムは、Googleの瀟内パヌトナヌず協力しお、入力レヌトず衚瀺レヌトが䞀臎しない堎合のスクロヌルパフォヌマンスを倧幅に改善したした。たずえば、Pixel 4の入力は120Hzで動䜜し、ディスプレむは90Hzで動䜜したす。この䞍敎合により、スクロヌルパフォヌマンスが䜎䞋する可胜性がありたす。新しいフラグresamplingEnabledを䜿甚するず、この問題を解決できたす。



void main() {
  GestureBinding.instance.resamplingEnabled = true;
  run(MyApp());
}


問題の呚波数の䞍䞀臎に応じお、このフラグを有効にするず、スクロヌルの埅ち時間が最倧97短瞮されたす。将来のビルドでは、このフラグをデフォルトで有効にする予定です。



新しい統合Dart開発者ツヌル



い぀ものように、Flutterアップデヌトは、゚ンゞンずフレヌムワヌクだけでなく、ツヌルにも関係したす。Flutter 1.22には、新しいバヌゞョンのDart2.10ず、dart䟿利な新しいコマンドラむンツヌルが含たれおいたす。



歎史的に、Dartには倚くの小さな開発者ツヌルdartfmtフォヌマットやdartanalyzerコヌド分​​析などがありたした。Dart 2.10には、ツヌルずdart非垞によく䌌た統合開発ツヌルがありたすflutter。







Flutter 1.22 SDK以降、フォルダヌ<flutter-sdk>/binおそらくにあるPATHにはflutterandコマンドが含たれおいたすdart。詳现に぀いおは、Dart2.10のブログ投皿を参照しおください。



アプリケヌションサむズ分析ツヌル



Flutter 1.22の䞀郚ずしおリリヌスされたツヌルには、新しいビルドサむズ分析ナヌティリティが含たれおいたす。このツヌルは、アプリケヌションのサむズが時間の経過ずずもに肥倧化しおいるかどうかを蚺断するのに圹立ちたす。



このツヌルを䜿甚しお、分析甚のデヌタを収集できたす。--analysis-size次のコマンドのいずれかでフラグを枡したす。



  • flutter build apk

  • flutter build appbundle

  • flutter build ios

  • flutter build linux

  • flutter build macos

  • flutter build windows



出力アヌティファクトを構築するずきにこのフラグを䜿甚するず、アヌティファクトのサむズず構成の抂芁が衚瀺されたす。ネむティブコヌド、リ゜ヌス、さらにはコンパむルされたDartコヌドのパッケヌゞレベルの内蚳も含たれおいたす。





サンプルリリヌスAPKフラッタヌギャラリヌの内蚳



この芁玄は、ビルドのサむズをすばやく分析し、ビルドが倧きすぎる理由を理解するのに圹立ちたす。たた、収集されたデヌタは、あなたが、さらに、アプリケヌションのコンテンツを調べるサむズの問題を特定し、以䞋のこずにより、2぀の異なるJSONファむル間の倉曎を確認するこずができたすダヌトデベロッパヌツヌルで衚瀺するこずができたすJSONファむルずしおも利甚可胜であるflutter.devの指瀺を。 JSONファむルをアップロヌドするず、アプリケヌションのサむズのツリヌマップを衚瀺するむンタヌフェむスが䜜成されたす。





flutter.devのアプリケヌションサむズ分析ツヌルのDartDevToolsドキュメントにあるAPKの内蚳の䟋







解説



AndroidStudioが長い間それ自䜓で実行できたこずが、開発ツヌルを介しお分析できるようになりたした。これはさらに柔軟性がありたす。これで、JsonのレポヌトをCIに盎接展開し、時間の経過に䌎うアセンブリサむズの倉曎を監芖できたす。



プレビュヌDevToolsのネットワヌクペヌゞを曎新



このリリヌスのDevToolsのもう1぀の予備機胜リク゚スト本文が[ネットワヌク]タブに衚瀺されるようになりたした。







この機胜を有効にするには、必ず経由フラッタDevチャンネルである䜜るflutter channel devずflutter channel upgrade。



さらに、ネットワヌクトラフィックが倧量のアプリケヌション向けに、怜玢ずフィルタリングの機胜を提䟛しおいたす。







[ネットワヌク]タブのドキュメントに぀いおは、flutter.devの「ネットワヌクビュヌの䜿甚」セクションを参照しおください。



IntelliJでホストされおいるDevToolsむンスペクタヌタブ



いく぀かの時間のために、今、私たちは私たちのフラッタツヌルのいく぀かの2぀のコピヌを維持しおきた。䟋えば、むンスペクタパネルのIntelliJでずむンスペクタタブダヌトデベロッパヌツヌルでは。これにより䜜業が遅くなりたす。2぀のコヌドベヌスを維持する必芁がありたす。たた、䞀郚の機胜はただIntelliJプラグむンの䞀郚ではありたせんレむアりト゚クスプロヌラヌなど。これらの問題に察凊するために、DartDevToolsからIntelliJ内で盎接[むンスペクタヌ]タブをホストする機胜を有効にしたした。







このオプションを有効にするには、に行く環境蚭定>蚀語ずフレヌムワヌク>フラッタヌ>組み蟌みデベロッパヌツヌルむンスペクタを有効にしたす。







, . Flutter Dev Podcast Android Studio VS Code.



, 
 . , IDE. . , Android Studio. .



Visual Studio Code



すべおのFlutter開発者が盎面する䞀般的なアクションは、タヌミナルの゚ラヌのスタックトレヌスから、゚ラヌが発生した゜ヌスコヌド内の堎所に移動するこずです。Visual Studio CodeのFlutter拡匵機胜の最新リリヌスでは、これらのリンクが正しく解析されるようになりたした。リンクをクリックしお、クラッシュが発生したコヌド内の目的の堎所に移動できたす。







小さなこずのように聞こえたすが、この機胜に関する最初のフィヌドバックはすでに非垞に肯定的です。



い぀ものように、ここにはツヌルの倉曎ログが倚すぎたすが、次の発衚を確認するこずをお勧めしたす。





顧客重芖EasyA



EasyAはサブスクリプションベヌスのアプリで、孊生はむンスタントメッセヌゞングを介しお優秀な講垫ず亀流したす。アプリケヌションはFlutterで曞かれおいたす。Appleは最近、それをApp of theDayずしおフラグを立おたした。







「今幎の初めに孊校が遠隔孊習に切り替え始めたずき、私たちは孊生を助けるためにアプリケヌションを迅速に立ち䞊げるずいう課題を抱えおいたした。Flutterでの高速開発のおかげで、iOSずAndroidの䞡方のアプリケヌションを䜜成するこずができたした。そしお、圌らはなんずか店でそれらを公開するこずができたした-ちょうどロックダりンの開始に間に合うように通垞の状況では、これは事実䞊䞍可胜です。しかし、Flutterを䜿甚するず、3぀のプラットフォヌムすべおを同時に操䜜できるため、コヌドを効果的に再利甚するこずができたした。私たちの小さな開発チヌムは䞀生懞呜働きたした。」



EasyAの共同創蚭者であるPhilKwok



重倧な倉曎



い぀ものように、私たちは重倧な倉曎の数を最小限に抑えるように努めおいたす。Flutter1.22のリストは次のずおりです。



  • 56413指定されたRectがすでに衚瀺されおいる堎合、viewport.showOnScreenがビュヌポヌトをスクロヌルしないようにしたす。

  • 62395 [gen_l10n]デフォルトの合成パケット生成。

  • 62588ルヌトをさらに少なく構築したす。



  • Flutter 1.22の安定版は、1.20のリリヌス埌すぐにリリヌスされた可胜性がありたすが、非垞に優れおいるため、ここですべおを説明するこずはできたせん。このリリヌスが玠晎らしいiOSおよびAndroidアプリの䜜成に圹立぀こずを願っおいたす。たた、ストアに䜕が来るのか楜しみです。あなたのサポヌトに感謝したす私たちはあなたのためにFlutterを構築しおいたす。



All Articles