Dart 2.15 programming lus thiab Flutter 2.8 moj khaum muaj

Google tau tshaj tawm qhov kev tso tawm ntawm Dart 2.15 programming lus, uas txuas ntxiv kev txhim kho ntawm radically redesigned Dart 2 ceg, uas txawv los ntawm cov thawj version ntawm Dart lus nyob rau hauv kev siv ntawm muaj zog static typing (hom yuav inferred txiav, yog li kev qhia. hom tsis tsim nyog, tab sis dynamic typing tsis siv lawm thiab thawj zaug xam cov hom yog muab rau qhov sib txawv thiab nruj hom tshuaj xyuas yog tom qab siv).

Cov yam ntxwv ntawm Dart lus:

  • Paub thiab yooj yim-rau-kawm syntax, ntuj rau JavaScript, C thiab Java programmers.
  • Ua kom muaj kev tshaj tawm sai thiab ua haujlwm siab rau txhua qhov web browsers niaj hnub thiab ntau hom kev ib puag ncig, los ntawm cov khoom siv nqa tau mus rau cov servers muaj zog.
  • Lub peev xwm los txhais cov chav kawm thiab cov interfaces uas tso cai rau encapsulation thiab rov siv cov txheej txheem thiab cov ntaub ntawv uas twb muaj lawm.
  • Kev qhia tshwj xeeb ua rau nws yooj yim dua rau kev debug thiab txheeb xyuas qhov yuam kev, ua rau cov cai meej dua thiab nyeem tau yooj yim, thiab ua kom yooj yim rau nws cov kev hloov kho thiab kev tshuaj xyuas los ntawm cov neeg tsim tawm thib peb.
  • Cov hom kev txhawb nqa muaj xws li: ntau hom hashes, arrays thiab cov npe, queues, cov lej thiab cov hlua, hom kev txiav txim siab hnub thiab sijhawm, cov lus qhia tsis tu ncua (RegExp). Nws yog ua tau los tsim koj tus kheej hom.
  • Txhawm rau txhim kho kev ua kom sib luag, nws tau thov kom siv cov chav kawm nrog tus cwj pwm cais, cov cai ntawm kev ua tiav tag nrho hauv qhov chaw sib cais hauv thaj chaw nco, cuam tshuam nrog cov txheej txheem tseem ceeb los ntawm kev xa cov lus.
  • Kev them nyiaj yug rau kev siv cov tsev qiv ntawv uas yooj yim rau kev txhawb nqa thiab kev debugging ntawm lub vev xaib loj. Thib peb cov kev siv ntawm cov haujlwm tuaj yeem suav nrog hauv daim ntawv ntawm cov tsev qiv ntawv sib koom. Cov ntawv thov tuaj yeem muab faib ua ntu thiab tso siab rau kev txhim kho ntawm txhua ntu rau ib pab pawg neeg ua haujlwm sib cais.
  • Ib txheej ntawm cov cuab yeej npaj tau los txhawb kev txhim kho hauv cov lus Dart, suav nrog kev siv cov kev txhim kho dynamic thiab debugging cov cuab yeej nrog kev kho code ntawm ya ("kho-thiab-mus txuas ntxiv").
  • Txhawm rau kom yooj yim txoj kev loj hlob hauv cov lus Dart, nws los nrog SDK, tus thawj tswj hwm pob pub, tus lej ntsuas tus lej zoo li qub dart_analyzer, pawg tsev qiv ntawv, ib puag ncig kev txhim kho DartPad thiab Dart-enabled plugins rau IntelliJ IDEA, WebStorm, Emacs, Sublime Text. 2 and Vim.
  • Cov pob khoom ntxiv nrog cov tsev qiv ntawv thiab cov khoom siv hluav taws xob tau muab faib los ntawm cov chaw cia khoom pub, uas muaj txog 22 txhiab pob khoom.

Kev hloov pauv loj hauv Dart 2.15 tso tawm:

  • Muab cov cuab yeej rau kev ua kom nrawm nrawm ntawm kev ua haujlwm nrog kev sib cais ntawm cov neeg ua haujlwm. Ntawm cov tub ntxhais ntau lub tshuab, Dart runtime los ntawm lub neej ntawd sau daim ntawv thov code ntawm ib qho CPU cores thiab siv lwm cov cores los ua cov haujlwm xws li asynchronous I / O, sau ntawv rau cov ntaub ntawv, lossis hu xov tooj hauv network. Rau cov ntawv thov uas yuav tsum tau ua kom lawv cov neeg ua haujlwm sib luag, piv txwv li, los ua cov animation hauv lub interface, nws muaj peev xwm tso cov blocks ntawm cov lej (cais cais), cais tawm ntawm ib leeg thiab ua rau lwm cov CPU cores ib txhij nrog cov ntawv thov tseem ceeb xov. . Txhawm rau tiv thaiv qhov tsis raug uas tshwm sim thaum tib lub sijhawm ua haujlwm ntawm cov lej ua haujlwm nrog tib txheej ntawm cov ntaub ntawv, kev sib koom ntawm cov khoom sib txawv hauv cov blocks sib txawv yog txwv tsis pub, thiab cov qauv kev xa xov yog siv rau kev sib cuam tshuam ntawm cov neeg ua haujlwm.

    Dart 2.15 qhia txog lub tswv yim tshiab - cais pawg pawg (ib pawg cais), uas tso cai rau koj los teeb tsa kev nkag mus rau ntau yam ntaub ntawv sab hauv hauv cov blocks cais uas yog ib feem ntawm tib pab pawg, uas tuaj yeem txo qis nyiaj siv ua haujlwm thaum sib cuam tshuam ntawm cov neeg tuav hauv ib pab pawg. . Piv txwv li, tso tawm ib qho thaiv thaiv ntxiv hauv ib pab pawg uas twb muaj lawm yog 100 lub sij hawm sai dua thiab yuav tsum tau 10-100 lub sij hawm tsawg dua lub cim xeeb tshaj li kev tso tawm ib qho kev cais cais, vim qhov kev tshem tawm ntawm qhov yuav tsum tau pib cov txheej txheem cov ntaub ntawv.

    Txawm hais tias qhov tseeb tias cais cov blocks hauv ib pab pawg tseem txwv tsis pub nkag mus rau cov khoom sib txawv, cov pab pawg siv lub cim xeeb sib koom ua ke, uas tuaj yeem ua kom nrawm hloov cov khoom los ntawm ib qho thaiv mus rau lwm qhov yam tsis tas yuav ua cov ntaub ntawv siv ntau cov ntawv luam. Tus tshiab version kuj tso cai rau koj kom dhau qhov tshwm sim ntawm tus tuav ntaub ntawv thaum hu Isolate.exit() hloov cov ntaub ntawv mus rau niam txiv cais thaiv yam tsis tau luam tawm haujlwm. Tsis tas li ntawd, cov txheej txheem xa xov tau raug kho kom zoo - cov lus me thiab nruab nrab tam sim no tau ua tiav kwv yees li 8 npaug sai dua. Cov khoom uas tuaj yeem kis tau los ntawm kev sib cais siv SendPort.send() hu muaj xws li qee hom kev ua haujlwm, kaw, thiab pawg kab.

  • Hauv cov cuab yeej tsim cov taw qhia rau tus kheej ua haujlwm hauv lwm yam khoom (tua-tawm), kev txwv ntawm kev tsim cov taw qhia zoo sib xws hauv cov qauv tsim tau raug tshem tawm, uas tuaj yeem pab tau thaum lub tsev sib cuam tshuam raws li lub tsev qiv ntawv Flutter. Piv txwv li, los tsim ib kab widget uas suav nrog ntau cov ntawv widgets, koj tuaj yeem hu rau ".map()" thiab dhau cov pointers rau Text.new constructor ntawm Text object: class FruitWidget extends StatelessWidget { @override Widget build(BuildContext context) { rov qab Kem( menyuam: ['Apple', 'Orange'].map(Text.new).toList()); }}
  • Cov kev muaj feem cuam tshuam nrog kev siv cov taw qhia ua haujlwm tau nthuav dav. Ntxiv lub peev xwm los siv cov txheej txheem dav dav thiab cov lus taw qhia ua haujlwm los tsim cov qauv tsis yog cov qauv thiab tus taw tes: T id (T tus nqi) => tus nqi; var intId = id ; // tso cai rau hauv version 2.15 es tsis txhob "int Function(int) intId = id;" const fo = id; // pointer rau function id. const c1 = foos ;
  • Lub dart: cov tsev qiv ntawv tseem ceeb tau txhim kho kev txhawb nqa rau enums, piv txwv li, tam sim no koj tuaj yeem tso tawm ib txoj hlua tus nqi los ntawm txhua tus nqi enum siv ".name" txoj kev, xaiv qhov tseem ceeb ntawm lub npe, lossis sib tw ua khub ntawm qhov tseem ceeb: enum MyEnum {ib qho , ob, peb } void main() { print(MyEnum.one.name); // "ib" yuav luam tawm. print(MyEnum.values.byName('two') == MyEnum.two); // "muaj tseeb" yuav luam tawm. map kawg = MyEnum.values.asNameMap(); print(map['three'] == MyEnum.three); // "muaj tseeb". }
  • Cov txheej txheem pointer compression tau siv los ua kom muaj kev siv ntau dua cov sawv cev ntawm cov taw qhia hauv 64-ntsis ib puag ncig yog tias qhov chaw nyob 32-ntsis txaus rau kev hais lus (tsis pub ntau tshaj 4 GB ntawm lub cim xeeb siv). Kev ntsuam xyuas tau pom tias qhov kev ua kom zoo li no ua rau nws tuaj yeem txo qhov loj ntawm heap los ntawm kwv yees li 10%. Hauv Flutter SDK, hom tshiab twb tau qhib rau Android los ntawm lub neej ntawd, thiab tau npaj yuav qhib rau iOS hauv kev tso tawm yav tom ntej.
  • Dart SDK suav nrog cov cuab yeej rau kev debugging thiab kev soj ntsuam kev ua tau zoo (DevTools), uas tau muab yav dhau los hauv ib pob cais.
  • Cov cuab yeej tau ntxiv rau "dart pub" cov lus txib thiab pub.dev pob repositories los taug qab qhov kev tshaj tawm tsis pub lwm tus paub, piv txwv li, tawm cov ntaub ntawv pov thawj rau kev sib koom ua ke txuas ntxiv thiab huab ib puag ncig hauv pob. Yog tias pom muaj qhov xau no, kev ua tiav ntawm "dart pub tshaj tawm" cov lus txib yuav cuam tshuam nrog cov lus yuam kev. Yog tias muaj qhov tsis zoo, nws muaj peev xwm hla dhau daim tshev los ntawm daim ntawv teev npe dawb.
  • Lub peev xwm tshem tawm cov ntawv luam tawm ntawm ib pob tau ntxiv rau pub.dev repository, piv txwv li, yog pom muaj qhov tsis zoo lossis qhov tsis zoo. Yav dhau los, rau qhov kev kho no, kev xyaum yog tshaj tawm cov kev kho kom raug, tab sis qee lub sijhawm nws yuav tsum tau tshem tawm qhov kev tso tawm uas twb muaj lawm thiab ceev nrooj nres nws qhov kev faib tawm ntxiv (piv txwv li, yog tias qhov kev kho tsis tau npaj txhij lossis yog tias qhov kev tso tawm tag nrho. luam tawm los ntawm kev ua yuam kev es tsis txhob sim version). Tom qab tshem tawm, lub pob tsis raug txheeb xyuas ntxiv lawm hauv "pub get" thiab "pub upgrade" cov lus txib, thiab ntawm cov tshuab uas twb tau teeb tsa lawm, ceeb toom tshwj xeeb tau tshaj tawm lub sijhawm tom ntej "pub tau" raug tua.
  • Ntxiv kev tiv thaiv tiv thaiv qhov tsis zoo (CVE-2021-22567) tshwm sim los ntawm kev siv cov cim unicode hauv cov lej uas hloov pauv cov lus txiav txim.
  • Kho qhov tsis zoo (CVE-2021-22568) uas tso cai rau koj los ua lwm tus neeg siv pub.dev thaum tshaj tawm cov pob khoom rau lwm tus neeg rau zaub mov uas lees txais pub.dev oauth2 nkag tokens. Piv txwv li, qhov tsis zoo tuaj yeem siv los tua cov neeg siv khoom sab hauv thiab koom nrog pob. Cov neeg tsim khoom uas tsuas yog host pob ntawm pub.dev tsis cuam tshuam los ntawm qhov teeb meem no.

Nyob rau tib lub sijhawm, qhov tseem ceeb tshaj tawm ntawm tus neeg siv interface lub moj khaum Flutter 2.8 tau nthuav tawm, uas yog suav tias yog lwm txoj hauv kev rau React Native thiab tso cai, raws li tus lej code, tso tawm cov ntawv thov rau iOS, Android, Windows, macOS thiab Linux platforms, nrog rau tsim cov ntawv thov los khiav hauv browsers. Lub plhaub kev cai rau Fuchsia microkernel operating system tsim los ntawm Google yog tsim los ntawm Flutter. Nws tau raug sau tseg tias dhau rau lub hlis dhau los, tus naj npawb ntawm Flutter 2 daim ntawv thov hauv Google Play Store tau nce los ntawm 200 txhiab rau 375 txhiab, piv txwv li. yuav luag ob zaug.

Qhov tseem ceeb ntawm Flutter code yog siv nyob rau hauv Dart lus, thiab lub cav khiav lub sij hawm rau kev ua tiav daim ntawv thov yog sau rau hauv C ++. Thaum tsim cov ntawv thov, ntxiv rau Flutter hom lus Dart, koj tuaj yeem siv Dart Foreign Function interface hu rau C / C ++ code. Kev ua haujlwm siab ua tiav yog ua tiav los ntawm kev sau cov ntawv thov rau cov cai ib txwm muaj rau cov phiaj xwm phiaj xwm. Hauv qhov no, qhov kev zov me nyuam tsis tas yuav rov ua dua tom qab txhua qhov kev hloov pauv - Dart muab cov kev hloov pauv kub uas tso cai rau koj hloov pauv rau daim ntawv thov khiav thiab ntsuas qhov tshwm sim tam sim ntawd.

Ntawm cov kev hloov pauv hauv qhov kev tso tawm tshiab ntawm Flutter, kev ua kom zoo tshaj plaws ntawm kev tshaj tawm ceev thiab nco noj ntawm cov khoom siv txawb tau sau tseg. Nws yooj yim dua los txuas cov apps rau cov kev pabcuam backend xws li Firebase thiab Google Cloud. Cov cuab yeej rau kev koom ua ke nrog Google Ads tau ruaj khov. Kev them nyiaj yug rau lub koob yees duab thiab lub vev xaib plugins tau txhim kho zoo dua. Cov cuab yeej tshiab tau raug npaj los ua kom yooj yim txoj kev txhim kho, piv txwv li, ib lub widget tau ntxiv rau kev lees paub siv Firebase. Lub tshuab hluav taws xob, tsim los tsim 2D kev ua si siv Flutter, tau hloov kho.

Tau qhov twg los: opennet.ru

Ntxiv ib saib