Flutter: рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬрдире░ 2018  ┬╖  133рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: flutter/flutter

рдЬрдм рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдкреЙрдиреНрдб рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдРрдк рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░)ред рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдХрд╣реАрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдордЬрдмреВрдд рд╕реАрдорд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреНрдпрд╛ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд▓рдЧ рдЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

P5 annoyance crowd gold engine framework passed first triage plugin crash new feature

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ (рдбрд╛рд░реНрдЯ: рдХрдиреНрд╡рд░реНрдЯ рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрд╕рд┐рдВрдХ рдирд╣реАрдВ рд╣реИрдВ), рдлрд┐рд░ рдЗрд╕реЗ рдПрд╕рдХреНрд▓рд╛рдЗрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрд╕рдХреНрд▓рд╛рдЗрдЯ рдбреАрдмреА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ (рдЬреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ);
  • ui рдХреЛ рдбреЗрдЯрд╛ рдкрд░реЛрд╕рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реАрдлрд╝реЗрдЪ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ;
  • рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ/рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ/рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкрдврд╝реЗрдВ/рд▓рд┐рдЦреЗрдВ (рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реБрд░рдХреНрд╖рд╛ libs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛ рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ);

рдЖрдо рддреМрд░ рдкрд░ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрддрдГ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реНрдкрдВрджрдирдлрд╛рдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ); рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ imho рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрддреНрдерд░ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдлрд┐рд▓рд╣рд╛рд▓ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдЬрд░ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЙрдк-рд░реВрдкреА рд╣реЛрдЧрд╛ .

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдереЛрдбрд╝рд╛ рдлрдВрд╕ рдЧрдпрд╛: рдХреНрдпрд╛ рдЖрдк рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реЗ рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж

рд╕рднреА 133 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

cc @mravn-google for triage

рд╕реЗрдХреЗрдВрдбрд░реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЗрдВрдЬрди рдХреЛрдб рдбрд┐рд░реЗрдлрд░реЗрдВрд╕ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдареАрдХ-рдареАрдХ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИ; рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рдзрд┐ рдХрд╛ рдкрддреНрдерд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдРрд╕реА рдЪреАрдЬ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред

рдПрдХ (рдЕрдирд╛рдбрд╝реА) рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкреНрд░рд╛рдердорд┐рдХ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реИред

@sroddy рдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдорд╛рдзреНрдпрдорд┐рдХ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ (рдбрд╛рд░реНрдЯ: рдХрдиреНрд╡рд░реНрдЯ рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрд╕рд┐рдВрдХ рдирд╣реАрдВ рд╣реИрдВ), рдлрд┐рд░ рдЗрд╕реЗ рдПрд╕рдХреНрд▓рд╛рдЗрдЯ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрд╕рдХреНрд▓рд╛рдЗрдЯ рдбреАрдмреА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ (рдЬреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ);
  • ui рдХреЛ рдбреЗрдЯрд╛ рдкрд░реЛрд╕рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░реАрдлрд╝реЗрдЪ рдФрд░ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ;
  • рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ/рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ/рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдкрдврд╝реЗрдВ/рд▓рд┐рдЦреЗрдВ (рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реБрд░рдХреНрд╖рд╛ libs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░рд┐рдкреНрдЯреЛ рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ);

рдЖрдо рддреМрд░ рдкрд░ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрддрдГ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реНрдкрдВрджрдирдлрд╛рдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ); рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ imho рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрддреНрдерд░ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдлрд┐рд▓рд╣рд╛рд▓ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдЬрд░ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЙрдк-рд░реВрдкреА рд╣реЛрдЧрд╛ .

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдереЛрдбрд╝рд╛ рдлрдВрд╕ рдЧрдпрд╛: рдХреНрдпрд╛ рдЖрдк рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реЗ рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдзрдиреНрдпрд╡рд╛рдж

@sroddy рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдпрд╣ рд╕реАрдзреЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рд╡рд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЦреБрдж рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рддрдм рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдПрдХ рдкреНрд▓рдЧрдЗрди рдпрд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪреИрдирд▓ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рдЬреНрдЮрд╛рдд рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рди рдХрд┐ рдореБрдЦреНрдп рд╕реЗ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрди рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрджреЗрд╢ рдХреЛ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рджреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдмреАрдЪ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдЙрддреНрддрд░реЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВред рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХрднреА рднреА рдЕрдВрддрд░ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред

рд╕рдорд╛рдзрд╛рди рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ M1 рдФрд░ R1 рдкреЛрд░реНрдЯ рдФрд░ рдЕрдкрдиреЗ рд╕реЗрдХреЗрдВрдбрд░реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ M2, R2 рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдо, рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЖрд░ред

  • рдЕрдкрдиреЗ рд╕реЗрдХреЗрдВрдбрд░реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП BinaryMessages.setMockMessageHandler рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ M1 рдкрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ (рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрд╕ рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде BinaryMessage.send рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рдЙрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ R2 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рд╣реА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред M2 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ BinaryMessages.handlePlatformMessage рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред R1 рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдЙрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
  • рд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдореЗрдВред M1 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ BinaryMessages.send рдкрд░ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкреНрд░рддреНрдпреБрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ R2 рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдХреЗ рд▓рд┐рдП BinaryMessages.setMessageHandler рдкрд░ рднреА рдХреЙрд▓ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЙрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдЬреЛ M2 рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рдФрд░ R1 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рд╣реА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

@ рд╣рд┐рдХреНрд╕реА рдореИрдВ рдЕрдЧрд▓реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрд╛рдордХрд╛рдЬ рдореМрдЬреВрдж рд╣реИред рдПрдХ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдПрдкреАрдЖрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░реНрдп рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореБрдЭреЗ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЦрдмрд░?

@ mravn-google рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ? рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ (рдореБрдЭреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрдХреНрд╖ рдкрд░ рдЖрд░рдПрд╕рдП 2048 рдХреБрдВрдЬреА рдЬреЛрдбрд╝реА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреБрд░рд╛рдиреЗ рдЙрдкрдХрд░рдгреЛрдВ рдпрд╛ рдХреНрд░рд┐рдкреНрдЯ/рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рдкрд░ рдХреБрдЫ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ)ред рдореИрдВ рдереНрд░реЗрдбреНрд╕ рдпрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рд╛рдЗрдб рдкрд░ рдореЗрд░рд╛ рдХрд╛рдо рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рджреЛрдиреЛрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбрд╛рд░реНрдЯ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЙрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ? рдЖрдкрдХрд╛ рдХрд╛рдордХрд╛рдЬ рдареАрдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдкрдВрджрди рдФрд░ рдбрд╛рд░реНрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВ (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ), рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред

рдореБрдЭреЗ рдПрдВрдбреНрд░реЙрдЗрдб/рдЖрдИрдУрдПрд╕ рдкрдХреНрд╖ рдкрд░ рдПрдХ рдкреАрдбреАрдПрдл рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдореИрдВ рд╡рд╣рд╛рдВ рд╕реЗ рдХреЙрд▓ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдЧрдгрдирд╛ (...) рд╡рд┐рдзрд┐ рдРрдк рдХреЛ рдХреНрд░реИрд╢ рдХрд░ рджреЗрддреА рд╣реИред

рдореБрдЭреЗ рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдЕрдм рдореИрдВ рдлрдВрд╕ рдЧрдпрд╛ рд╣реВрдБред

рдореИрдВ рд╕рд╛рдЭрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рд╕реЗ рдПрдХреНрд╕реЗрд╕рдЯреЛрдХрди рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рднрд▓реЗ рд╣реА рдРрдк рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рди рд╣реЛ (рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ)ред

рддреЛ, рдХреНрдпрд╛ рдХреЛрдИ рдореБрдЭреЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВ рдЕрдм рд╕рдЪрдореБрдЪ рдореБрд╕реАрдмрдд рдореЗрдВ рд╣реВрдБред

/cc @bkonyi рдпрд╣ рдЙрд╕ рдЪреАрдЬрд╝ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред рд╕реАрдкреАрдпреВ-рдмрд╛рдЙрдВрдб рдкрд░ рд╣рдорд╛рд░рд╛ рдЙрддреНрдкрд╛рдж рдЖрдзрд╛рд░ред рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВя╝Я

@ рдереЙрдорд╕рди-рддреНрд╕реБрдИ рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдереА, рдФрд░ @bkonyi рдФрд░ рдЙрдирдХреЗ FlutterGeofencing рдирдореВрдиреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рдо рдХреЗ рдЖрд╕рд╡рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ flutter_blue рдФрд░ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдХрд╛рдлреА рдЕрд╡рд╛рдВрдЫрд┐рдд рд╣реИ рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрдорд╛рдПрдВред

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ?

рдореИрдВ https://pub.dartlang.org/packages/flutter_isolate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рдореБрдЭреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рдСрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдСрдбрд┐рдпреЛ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рдПрдХ рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдбрд╛рд░реНрдЯ рд╕реЗ рдЕрд▓рдЧ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдВрдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛ рд╕реЗ рд╕реНрдкрдВрджрди рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╕рдордп, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

┬а┬а private native void nativeRunBundleAndSnapshotFromLibrary (
┬а┬а┬а┬а┬а┬а long nativePlatformViewId,
┬а┬а┬а┬а┬а┬а <strong i="7">@NonNull</strong> String [] prioritizedBundlePaths,
┬а┬а┬а┬а┬а┬а <strong i="8">@Nullable</strong> String entrypointFunctionName,
┬а┬а┬а┬а┬а┬а <strong i="9">@Nullable</strong> String pathToEntrypointFunction,
┬а┬а┬а┬а┬а┬а <strong i="10">@NonNull</strong> AssetManager manager
┬а┬а );

рдЬрд┐рд╕рдореЗрдВ рд╕рд╛рд░рд╛ рдЬрд╛рджреВ рд╣реЛрддрд╛ рд╣реИ)

рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрдИ FlutterNativeView рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд░рди рдореЗрдВ:

┬а public void runFromBundle (FlutterRunArguments args)

рддрдм рд╣рдореЗрдВ рдХреБрдЫ "рдбрд╛рд░реНрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕" рдорд┐рд▓рддреЗ рд╣реИрдВ

рд╣рдо рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ (рдЬреИрд╕реЗ рд╕реНрдерд╛рди, рд╢реЛрд░, рдЖрджрд┐) рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред @ mravn-google - рдПрдкреАрдЖрдИ рдХреЗ рдЕрдкрдбреЗрдЯ рдкрд░ рдХреЛрдИ рдЦрдмрд░ рдЬреЛ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ?

рдЯреВрд▓ рдпрд╛ рдореАрдбрд┐рдпрд╛ рдРрдкреНрд╕ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдереНрд░реЗрдб рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдореИрдВрдиреЗ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрднреА рдЕрдЯрдХ рдЧрдпрд╛ рд╣реВрдВред

+1 (рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдореЗрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдХреА рднреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЬрд░реВрд░рдд рд╣реИ)

рдореБрдЭреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╡рд┐ рдореЗрдВ рдХреБрдЫ рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ ui рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдбрд╛рд░реНрдЯ: ui.PictureRecorder рдХреА рдкрд╣рд▓реА рджреЗрд╢реА рдХреЙрд▓ рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдХреЙрд▓ (рдЬреЛ рдореВрд▓ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ) рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреАред рдЪреВрдВрдХрд┐ рдореИрдВ рдХреИрдирд╡рд╛рд╕ рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рджрд░реНрдж рд╣реЛрдЧрд╛ред

рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред

+1 рдореБрдЭреЗ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реА

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @mravn-google рдиреЗ рдЖрд░рд╣реВрд╕ рдореЗрдВ Google рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ Google рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рд╕реЗ рдХреЛрдИ рдФрд░ рд╣реИ рдЬреЛ рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реИред рдЖрдИрдПрдордУ, рд▓рдЪреАрд▓рд╛ рдФрд░ рдордЬрдмреВрдд рд╕реНрдкрдВрджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрди рдХреЗ рдЧрдВрднреАрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╢реЛ рд╕реНрдЯреЙрдкрд░ рд╣реИ ....

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ @sethladd рдХреЛрдИ рджрд░реНрдЬрд╛ рджреЗ рд╕рдХреЗ?

+1

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

+1

рдЬрд┐рд╕ рджрд┐рди рдЖрдк рдПрдХ рдмрдЧ рд╕реЗ рдорд┐рд▓реЗ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рджрдо рдкрд░ рд╣рд▓ рдХрд░рдирд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрдВрддрдЬрд╛рд░ рд╣реА рдЖрдЦрд┐рд░реА рдЙрдореНрдореАрдж рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рд╕реНрдкрдВрджрди рдЗрдВрдЬреАрдирд┐рдпрд░ рдирд╣реАрдВ рдмрди рдЬрд╛рддрд╛ред

рд╣рдореЗрдВ рдирдП рд╕реНрдкрдВрджрди/рдбрд╛рд░реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреА рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рджреЛ рджрд┐рди рдкрд╣рд▓реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рд╕реНрдкрдВрджрди/рдбрд╛рд░реНрдЯ, рдФрд░ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдЧрдВрднреАрд░ рд╢реНрд░рдо-рдЧрд╣рди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╕реАрдЦрдиреЗ рдХреЛ рдЦрд░рд╛рдм рд╕рдорд╛рдзрд╛рди рдмрдирд╛рддрд╛ рд╣реИред рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рдореИрдВ рдХреЛрдЯрд▓рд┐рди рд╕реАрдЦрдиреЗ рдФрд░ рдЕрдкрдиреЗ рдРрдкреНрд╕ рдХреЛ рджреЛ рдмрд╛рд░ рдмрдирд╛рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реВрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭрджрд╛рд░ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рдпреЛрдХреНрддрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреА рд╕реНрдкрдВрджрди рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреВрдВред
рдпрджрд┐ рдпрд╣рд╛рдБ рдирд╣реАрдВ, рд╢рд╛рдпрдж StackOverflow рдкрд░, рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ: https://stackoverflow.com/q/57466952/6047611

+1 рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛

+1 рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реА рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ @ mravn-google рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд╕рдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреИрдХреЗрдЬ ( рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╣реИрдВрдбрд▓рд░ ) рдмрдирд╛рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╣реИрдВрдбрд▓рд░ рдЖрдкрдХреЛ рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рджреЛрдиреЛрдВ рд╕реЗ рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рднреАрддрд░ рд╕реЗ рд╕реАрдзреЗ MethodChannel рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ EventChannel рд╕реНрдЯреНрд░реАрдо рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ рдпрджрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдЪрд╛рд╣рд┐рдПред

рд╕рдорд╛рдзрд╛рди рдХрд╛ рдПрдХ рдкрд╣рд▓реВ рдЪреИрдирд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдкреГрдердХ рд╣реИрдВрдбрд▓рд░ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рдореВрд▓ рдХреЛрдб рд╕реНрд╡рдпрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рд╣реИ FlutterIsolate , рдЬреЛ рдПрдХ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рднреА рд╣реИред

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рджреЗрд╡ рдЬрд▓реНрдж рд╣реА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреВрд░реНрдг рдФрд░ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рдлрд╝реНрд▓рдЯрд░ рдкреНрд░рдердо-рдкрдХреНрд╖ рдПрдВрдбреНрд░реЙрдЗрдб рдЕрд▓рд╛рд░реНрдо рдореИрдиреЗрдЬрд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ рдкрдХреНрд╖ рд╕реЗ рдЕрд▓рдЧрд╛рд╡ рд╢реБрд░реВ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдХрд░рдиреА рдереА, рд╡рд╣ рдереА рдореЗрд░реЗ рдореВрд▓ рдХреЛрдб рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдореВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рдкреНрд░рд╡рд╛рд╕ рдерд╛ред рдпрджрд┐ рдЖрдк pub.dev рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

+1 рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ?

+1

рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдореИрдВ рдпрд╣рд╛рдБ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ:
рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЙрд▓ рдбрд╛рд░реНрдЯ рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ; рд╕рдВрдмрдВрдзрд┐рдд рд░реВрдк рд╕реЗ, рдХреБрдЫ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рд▓реЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рдмреАрдЬреА рдЬрд┐рдпреЛрдлреЗрдВрд╕рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░ рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рдЖрдПрдВ ...
рдпрджрд┐ рд╡реЗ рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡рд╣ рдкреНрд▓рдЧрдЗрди рдХреЛрдб "рдЬрдВрдХ" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдереНрд░реЗрдб рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ "рдпреВрдЖрдИ рдереНрд░реЗрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛; рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЗ рджреМрд░рд╛рди рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд╕рднреА рд╕рдВрджреЗрд╢ рдЪреИрдирд▓реЛрдВ рдХреЛ рднреА рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрдЧрд╛ред
рдлрд┐рд░ рдЖрдк рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦрдХ рдХреА рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреА рджрдпрд╛ рдкрд░ рд╣реИрдВ; рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╡реЗ рдЕрдкрдиреЗ рднрд╛рд░реА рдХрд╛рдо рдХреЛ рдореВрд▓ рдХреЛрдб рдореЗрдВ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреЛрдб рдЪрд▓рд╛ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╡рд┐рдзрд┐ рдЪреИрдирд▓реЛрдВ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ; рдЙрди рд╕рдВрджреЗрд╢ рдЪреИрдирд▓реЛрдВ рдХреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдб рдкрд░ рдЪрд▓рд╛рдирд╛ рд╣реИред
рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдЪрд┐рдиреНрдордпрдЧрд╛рд░реНрдб рдпрд╣рд╛рдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ , рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐:

  • рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо API рдХреЙрд▓ рддреЗрдЬрд╝ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдореБрдЦреНрдп рдереНрд░реЗрдб рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ;
  • рдпрд╣ рдореВрд▓ рдХреЛрдб рдореЗрдВ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ
  • рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдзрд┐ рдУрд╡рд░рд░рд╛рдЗрдб рдореЗрдВ "рдореБрдЦреНрдп рдереНрд░реЗрдб" рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдирд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рд╣реИ

    • рдореИрдВ рдХреЗрд╡рд▓ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХрд╛ рдкрд╣рд▓рд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рдереНрд░реЗрдб-рдУрдирд▓реА рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдХреИрд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдиреЗ рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдЦреЛрд▓рд╛; рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдПрдордПрд▓ рдкреНрд▓рдЧрдЗрди рднреА рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХрдбрд╝реА рдЪреЗрддрд╛рд╡рдиреА рджреА рдЧрдИ рд╣реЛ рдЬреЛ рднрд╛рд░реА рдЙрдард╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рджреА рдЬрд╛рддреА; рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрджрд╛рд╣рд░рдг рдРрдк рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдСрди-рд╕реНрдХреНрд░реАрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрджреЗрд╢ рдЪреИрдирд▓ рдХреЙрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдореЗрдВ ~ 20 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдЪреЗрд╣рд░реЗ рдкрд░; рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЬреЛ рдХреБрдЫ рднреА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдбреАрдмреА рдХреЙрд▓ рдФрд░ рд╕реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддрд╛ рд╣реИред рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдзрд╛рдЧрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рдУрд╣, рдХреЛрдИ рдореБрдлреНрдд рд▓рдВрдЪ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрдХреНрдХрд╛ рд╣реИ...

рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рднрд╛рд░реА рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред

@AndruByrne рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рд╕реЗ рдЕрдирдЬрд╛рди рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реА рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдпреВрдЖрдИ рдХреЛ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ - рд╕реНрдкрдВрджрди рдкреНрд░рд╛рдЗрдордЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдЕрднреА рддрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИред рд╕рднреА рдлрд╝реНрд▓рдЯрд░ рдРрдкреНрд╕ рд╕рд╛рдзрд╛рд░рдг async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХреЗ рд▓рд┐рдП рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд░реНрде рдФрд░ рдмреЗрдорд╛рдиреА рдмрдирд╛рддреЗ рд╣реИрдВред Xamarin рдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдерд╛ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдм рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

+1

рдореБрдЭреЗ рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рднреА рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

+1

+1

+1

+1 рдпрд╣ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

+1
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рджреЗрд╢реА рдПрд╕рдбреАрдХреЗ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред BackgroundFlutterMethodChannel рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреАред

+1

+1

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдХрд┐ _рдХреНрд░реИрд╢ рдмреБрд░реА рддрд░рд╣ рд╕реЗ_ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдПрдХ рдкреНрд░реВрдл-рдСрдл-рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рднреЗрдЬрддреЗ рд╕рдордп рд╡реЙрдЪрдбреЙрдЧ рдЯрд╛рдЗрдордЖрдЙрдЯ (0x8badf00d) рдФрд░ рдЕрдиреНрдп рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рддрд░реАрдХреЛрдВ [рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ] рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рдзрд╛рдЧреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдЯреАрдХ рдореБрджреНрджреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред

+1

+1

+1

+1

+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

+1 рдХреЛ рдЗрд╕рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрдо рд╕реЗ рдХрдо p2 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдордВрдЪ рдЪреИрдирд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡реЗ рд╣реИрдВ

  • рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ API рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд░реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рдЕрд╡рд░реЛрдзрдХ рд╣реИред

Flutter_downloader рдкреНрд▓рдЧрдЗрди рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛрдб рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рд▓рд╛рдпрдХ рд╣реИред

рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЖрдЧрд╛рдореА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдмрдЧ рдЕрднреА рднреА 1.12 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрдиреА рд╣реБрдИ рд╣реИ!

рд╣рдорд╛рд░рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХреЛрдб рдЪреИрдирд▓ рдХреЗ рджреВрд╕рд░реА рддрд░рдл рднрд╛рд░реА рд╣реИ рдФрд░ рдХреЛрдЯрд▓рд┐рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдРрдк рд▓рдЧрднрдЧ рдкреНрд░рддреНрдпреЗрдХ http рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдЯрдХ рдЧрдпрд╛ рд╣реИ

Gooooooooooooooogle?!!!!!!!!!!!!?!?!?!?

рдпрд╣ рдкреНрд▓рдЧрдЗрди рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ flutter_isolate

+1 рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ...рдЖрдУ

+1

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд╛рд░реНрдЯ рдФрд░ рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░ рд╣реЛрддрд╛ рд╣реИ - рдпреВрдЖрдИ рдХреЛ рдкреАрдЫреЗ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╛ рдкреЗрдЬ рдбреЗрдЯрд╛ рдкрд░ рдмреЛрдЭрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдХрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рднреЗрдЬрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдкреЗрдЬ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдмреЛрдЭрд┐рд▓ рдХреЛрдб рд▓рд┐рдЦрдирд╛ред

@lukaszciastko рдкреЗрдЬ рдбреЗрдЯрд╛ рдкрд░ рдХреЛрдб рд▓рд┐рдЦрдХрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдбреЗрдЯрд╛ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рднреЗрдЬрддреЗ рд╕рдордп рд▓реИрдЧрд┐рдВрдЧ UI рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ ??

@YaredTaddese

рдЖрдкрдХрд╛ ISOLATE рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ UI рдФрд░ ISOLATE рдХреЗ рдмреАрдЪ рдЕрдВрддрд░-рд╕рдВрдЪрд╛рд░ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - ISOLATE рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ISOLATE рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдХреЗ рдЖрдкрдХреЗ UI рдХреЛрдб рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдкрдВрджрди рдРрдк рдореЗрдВ рд╕рдореГрджреНрдз рдкреАрдбреАрдПрдл рдкреАрдврд╝реА рд╣реИ - рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рдкреАрдбреАрдПрдл рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ 1 рд╕реЗ 10,000 рдкреГрд╖реНрдареЛрдВ рддрдХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдпреВрдЖрдИ рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИ, рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдПрдХ рдЯреИрдм рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдп рдЯреЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпреВрдЖрдИ рд░реБрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ рд╡реНрдпрд╕реНрдд рд╣реИрдВ рд╕рдореГрджреНрдз рдкреАрдбреАрдПрдл рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ред

рдзреНрдпрд╛рди рджреЗрдВ, рдореЗрд░реА рдкреАрдбреАрдПрдл рдкреАрдврд╝реА рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╣реИред рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ -, рдореБрдЭреЗ рдХреНрд▓рд╛рдЙрдб рдлрд╛рдпрд░рд╕реНрдЯреЛрд░ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреАрдбреАрдПрдл рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

@MsXam рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ ... рдЬреЛ рдореБрдЭреЗ рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ ...

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

@YaredTaddese

рдЖрдкрдХрд╛ ISOLATE рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ UI рдФрд░ ISOLATE рдХреЗ рдмреАрдЪ рдЕрдВрддрд░-рд╕рдВрдЪрд╛рд░ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ - ISOLATE рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ ISOLATE рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣ рд╕рдВрд░рдЪрд┐рдд рдХрд░рдХреЗ рдЖрдкрдХреЗ UI рдХреЛрдб рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдкрдВрджрди рдРрдк рдореЗрдВ рд╕рдореГрджреНрдз рдкреАрдбреАрдПрдл рдкреАрдврд╝реА рд╣реИ - рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ рдкреАрдбреАрдПрдл рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рддреНрдпреЗрдХ 1 рд╕реЗ 10,000 рдкреГрд╖реНрдареЛрдВ рддрдХ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░рд╛ рдпреВрдЖрдИ рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИ, рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ рддреЛ рд░рд┐рдкреЛрд░реНрдЯ рджрд┐рдЦрд╛рддреЗ рд╣реБрдП рдПрдХ рдЯреИрдм рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдп рдЯреЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпреВрдЖрдИ рд░реБрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ рд╡реНрдпрд╕реНрдд рд╣реИрдВ рд╕рдореГрджреНрдз рдкреАрдбреАрдПрдл рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ред

рдзреНрдпрд╛рди рджреЗрдВ, рдореЗрд░реА рдкреАрдбреАрдПрдл рдкреАрдврд╝реА рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╣реИред рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ -, рдореБрдЭреЗ рдХреНрд▓рд╛рдЙрдб рдлрд╛рдпрд░рд╕реНрдЯреЛрд░ рд╕реЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреАрдбреАрдПрдл рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдпрд╣ рд╕рдм рдирд┐рд░реНрдмрд╛рдз рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдХреЛ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛ рд╣реИ? рдпрд╣ рдпреВрдЖрдИ рдереНрд░реЗрдб рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реВрдБред

рдореИрдВ рдПрдХ рдореЗрдердбрдЪреИрдирд▓ рдХреЛ рдХреЛрдЯрд▓рд┐рди рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ getStream.io рдПрдкреАрдЖрдИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдзреАрдорд╛ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рд╕реНрдкрдВрджрди рдпреВрдЖрдИ рдлреНрд░реАрдЬ, рдореИрдВ рдЗрд╕рдореЗрдВ рдЧрдгрдирд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╣реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВред

рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реВрдВ?

рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рднреА рднрд╛рдЧрд╛ред рдореИрдВ рдПрдХ рдирдП рдРрдк рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╢реЛрд╕реНрдЯреЙрдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрдиреНрдп рдЧреИрд░-рд╕реНрдкрдВрджрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рджреБрдЦреА рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдорд╛рддреНрд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдлрд╝реНрд▓рдЯрд░ рдРрдк рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╣рд░рд╛ рджреЗрддреА рд╣реИред

рдореИрдВ рдмрд╕ рдЗрд╕ рдкрд░ рднреА рднрд╛рдЧрд╛ред рдореИрдВ рдПрдХ рдирдП рдРрдк рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╢реЛрд╕реНрдЯреЙрдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЕрдиреНрдп рдЧреИрд░-рд╕реНрдкрдВрджрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рджреБрдЦреА рдХрд░реЗрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдорд╛рддреНрд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдлрд╝реНрд▓рдЯрд░ рдРрдк рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╣рд░рд╛ рджреЗрддреА рд╣реИред

рд╣рд╛рдБ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рд╣реИ, рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдареАрдХ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдореИрдВ 10 рджрд┐рдиреЛрдВ рд╕реЗ рд╕реНрдкрдВрджрди рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдЕрдм рддрдХ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рдордп рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЖрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ, рдФрд░ рдХрдорд┐рдпрд╛рдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ 5 рдЬрдирд╡рд░реА 2018 рд╕реЗ рдЦреБрд▓рд╛ рд╣реИ, рдЙрдлрд╝...

рдХреГрдкрдпрд╛ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВред

рдЖрд╢рд╛ рд╣реИ рдЬрд▓реНрдж рд╣реА рд╕рдорд░реНрдерди рдХрд░реЗрдВрдЧреЗред

@jpsarda , @klaszlo8207 рдЕрдкрдиреА рд╕рд╛рдВрд╕ рди рд░реЛрдХреЗрдВред рдФрд░ рд╣рд╛рдБ, рд╡рд╣рд╛рдБ *рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдерд╛ , рдЖрдЬ рддрдХ: https://pub.dev/packages/isolate_handlerред рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЖрдЬ рдЙрд╕ рдкрд░ рдкреНрд▓рдЧ рдЦреАрдВрдЪрдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрдВрджрди (рдХреЗрд╡рд▓ рдХреБрдЫ рджрд┐рди рдкреБрд░рд╛рдирд╛) рдореЗрдВ рдПрдХ рд╣рд╛рд▓рд┐рдпрд╛ рдмрджрд▓рд╛рд╡ рдиреЗ рдЙрд╕ рдорд╛рд░реНрдЧ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рдирддрд╛рд╡рд╛рдж рдирд╣реАрдВ рдерд╛ред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдРрдкреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдФрд░ рджрд┐рдЦрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛрдб рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рд╡реИрд╕реЗ рднреА, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рдХреЛ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЬрдм рднреА рдЖрдк рдПрд╕рд┐рдВрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдбрд╛рд░реНрдЯ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

@spiderion Async рдХрд╛ рдорддрд▓рдм рдХрднреА рднреА рдХрдИ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреА рддрд░рд╣ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдирд╣реАрдВ рдерд╛ред рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рдХреА рд╕реАрдорд╛ рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИ (рдореЗрд░рд╛ рдРрдк рдХрд▓ рддрдХ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрдм рдореБрдЭреЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реИ), рд▓реЗрдХрд┐рди async/ рдкреНрд░рддреАрдХреНрд╖рд╛ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рдХрднреА рднреА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдереАред

@zoechi рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?
рд╢реБрдХреНрд░рд┐рдпрд╛ред

@spiderion рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдо рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИред рдЙрдирдХреЗ рдкреАрдЫреЗ рдХреЛрдИ UI рдЗрдВрдЬрди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВ:

  • https://pub.dev/packages/flutter_isolate рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рд╕рдВрдЪрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ UI рд╕рдорд░реНрдерди рдмрдирд╛рддрд╛ рд╣реИ (рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рдмрд╕ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ),

  • https://pub.dev/packages/isolate_handler рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЕрднреА рдКрдкрд░ рдХреЗ рдкреИрдХреЗрдЬ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкрд┐рдЫрд▓реЗ рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реНрдкрдВрджрди рдкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред flutter_isolate рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЖрдк рдХрдИ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдирдХрд╛ рдЯреНрд░реИрдХ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдФрд░ рдореБрдЦреНрдп рдХреЗ рдмреАрдЪ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕рдВрдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдереНрд░реЗрдб (рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЖрдкрдХреЛ рдореВрд▓ рд╕реНрдЯреЙрдХ Isolate рдФрд░ FlutterIsolate рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╣реИ) рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рд╣реИ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдореИрдВ рдкреВрд░реНрдг рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рджрд░рдЕрд╕рд▓, рдореИрдВ рдЗрд╕реЗ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЬрдм рд╕реНрдкрдВрджрди рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛, рддреЛ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдирдП рд╕рдорд╛рдзрд╛рди рдкрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдХреА, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдРрдк рднреА рдЯреВрдЯ рдЧрдпрд╛ред :-)

рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреЛрд░ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреИрдХрд┐рдВрдЧ рдпреВрдЖрдИ рдЗрдВрдЬрди рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╡реЗ рд╣рд░ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрдм рдЖрдкрдХреЛ рдЙрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдмрд╕ рдореМрдЬреВрджрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рд╣рд╛рдп @deakjahn рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрдк рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдХрд╣рд╛рдиреА рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ Instagram рдХреЗ рд╕рдорд╛рди рдХрд╣рддрд╛ рд╣реИред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдРрдк рдХреЛ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдлрд╛рдпрд░рдмреЗрд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ (рдХрдиреЗрдХреНрд╢рди рдзреАрдорд╛ рд╣реЛрдиреЗ рдкрд░ рд▓рдЧрднрдЧ 15 рдорд┐рдирдЯ) рдлрд┐рд░ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдРрдк рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдлрд╛рдпрд░рдмреЗрд╕ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ, рдлрд╛рдпрд░рд╕реНрдЯреЛрд░ред рдореБрдЭреЗ рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдРрдк рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ рддреЛ рдкреВрд░рд╛ рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдлрд╛рдпрд░рдмреЗрд╕ рд░реБрдХреЗ рд╣реБрдП рдЕрдирд▓реЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЦреБрдж рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВ getBatteryLevel рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
https://flutter.dev/docs/Development/platform-integration/platform-channels?tab=android-channel-java-tab
рдФрд░ рдЬрдм рднреА рдореИрдВ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рдВрдЪ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рд▓реЙрдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдирдВрдд рд▓реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдареАрдХ рдЙрд╕реА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ P5 рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓ рдХрд░рдирд╛ ??? рдореИрдВ

рдХреГрдкрдпрд╛, рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдРрд╕рд╛ рдмрд╣реБрдд рдХрдо рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдирдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╣реЛрддреЗ рд╣реИрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрдВрддреНрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдХрд┐рддрдирд╛ рдХрдард┐рди рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрдиреНрд╣реЗрдВ рдмрд╕ рдкрд░рд┐рдгрд╛рдо рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдлрд╝реНрд▓рдЯрд░ рдХреЛ рдЗрд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ...

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдореМрдЬреВрджрд╛ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ P5 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рд╛рде рд╣реА, рдореИрдВ рдЖрдкрдХреА рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдирд╣реАрдВ, рдпрд╣ рдореИрдВ рдирд╣реАрдВ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рдерд╛, рд╣рд╛рдБред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдЗрд╕реЗ рдЧреБрдкреНрдд рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рджреЛ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ (рдПрдХ рд╣реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░) рдЬреЛ рджреЛрдиреЛрдВ рд╣реА рд╡рд╣ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдЬреЛ рдЖрдк рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдореЗрд░рд╛ рдЕрдм рддрдХ рдХрд┐рдП рдЧрдП рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдп рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВрдиреЗ рдЗрдиреНрд╣реЗрдВ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдпрд╣ рдерд╛ рдХрд┐ рдореБрдЭреЗ рд╡рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдиреЗ рдорд╛рдВрдЧреА рдереАред рдФрд░ рдореЗрд░реЗ рдРрдкреНрд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рд╛рдордпрд┐рдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╕рд┐рд░реНрдл рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рд╕рд╛рде рд╣реА рдореИрдВрдиреЗ рдлрд╝реНрд▓рдЯрд░ рд╡реЗрдм рдореЗрдВ рдЙрдирдХреЗ рд╕рдордХрдХреНрд╖ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╡рд╣ рд╕рдЪ рдерд╛: рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдврд╛рдВрдЪреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрд╛рдлреА рддрд░реНрдХ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВред рдЗрд╕рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдХрдо рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╕рднреА рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреИрдХрдПрдВрдб рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@deakjahn рдЗрди рдпреБрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдЗрд╕реЛрд▓реЗрдЯ_рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдФрд░ рдбрд╛рд░реНрдЯ рдкрдХреНрд╖ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреА рдЬрдм рднреА рдореБрдЭреЗ рдореВрд▓ рдкрдХреНрд╖ рдкрд░ рд╕реВрдЪрдирд╛ рдорд┐рд▓рддреА рд╣реИ? (рдореИрдВ twilio рджреЗрд╢реА sdks рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореВрд▓ рдкрдХреНрд╖ рдкрд░ рдкреБрд╢ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рдпрджрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреИрдЯрдлреЙрд░реНрдо рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдБ, рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкреИрдХреЗрдЬ рдорджрдж рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдпрд╣ рдирд┐рдпрдорд┐рдд рдХреЛрдб рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпреЗ рдкреИрдХреЗрдЬ рдЗрд╕реЗ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

@deakjahn рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреНрд╡рд┐рд▓рд┐рдпреЛ рдПрд╕рдбреАрдХреЗ рдПрдХ рдЕрд▓рдЧ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдкреБрд╢ рдЕрдзрд┐рд╕реВрдЪрдирд╛рдУрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ, рди рдХрд┐ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдореИрдВ рд╣рд░ рдмрд╛рд░ 2 рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реВрдВ? рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред (рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рддреЛ рдореИрдВ рджреЗрд╢реА рдРрдкреНрд╕ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЯреНрд╡рд┐рд▓рд┐рдпреЛ рдХреНрдпрд╛ рд╣реИ (рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧреБрдЧрд▓ рдХрд┐рдпрд╛ :-)), рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рджрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдореВрд▓ рдХреЛрдб рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╡реИрд╕реЗ рднреАред рдпрд╛ рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдЯреНрд╡рд┐рд▓рд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдк рдпрд╛ рддреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдкреНрд▓рдЧрдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдмрд╕ рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рджреЗрдЦреЗрдВ), рдпрд╛ рдЖрдк рдмрд╕ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкреНрд▓рдЧрдЗрди рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдРрдк рдореЗрдВ рдХреЛрдб (рдпрд╣ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╣реА рдХреЛрдб рд╣реЛрдЧрд╛, рд╡реИрд╕реЗ рднреА)ред

рдФрд░, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рдЙрддреНрддрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рдФрд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдорд┐рдд рдлрд╝реНрд▓рдЯрд░ рдРрдк рдХреЗ рдореБрдЦреНрдп рдереНрд░реЗрдб рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд┐рд╕реА рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛ рдкреИрдХреЗрдЬред

рддреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ 5 рдЬрдирд╡рд░реА 2018 рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрднреА рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдЕрдЪреНрдЫреЗ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рддреЛ рдЬреЛ рдХреЛрдИ рднреА рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реНрдкрдВрджрди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣рд╛рдВ рдкреВрд░реА рддрд░рд╣ рдлрдВрд╕ рдЬрд╛рдПрдЧрд╛ред
рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдРрдк рдХреЛ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдмрдбрд╝реА рдЧрдгрдирд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ, рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдкреА рдбрд┐рдЬрд╝рд╛рдЗрди рджреЛрд╖реЛрдВ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рд░реНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИ

рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╕рдВрдЪрд╛рд░ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВред
рдпрджреНрдпрдкрд┐ рдЙрджрд╛рд╣рд░рдг рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рд░реНрдЯ рд╡рд┐рдВрдбреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рд░реНрддрд╛ рдкреНрд░рджрд╛рди рдХреА, рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЕрдиреНрдп рдлреИрдВрд╕реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!

рдпрд╣ рдЕрднреА рднреА рдХрд╛рдлреА рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐/рдЕрдЧреНрд░рднреВрдорд┐ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рд╕реАрдзреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдРрдк рд╕реНрдХреЛрдк рдкрд░ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХрд╛ рдРрдк рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рдмреИрдХрдЧреНрд░рд╛рдЙрдб рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдРрдк рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рдПрдлрд╕реАрдПрдо рдкреНрд▓рдЧрдЗрди рдХреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореИрд╕реЗрдЬ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╕рд╛рдЭрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдПрдХ MissingPluginException рдлреЗрдВрдХ рджреЗрдЧрд╛ред

рдпрд╛ рдпрджрд┐ рдЖрдк рдРрдк рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рд░реНрдЯ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрд▓рд░реНрдЯ рд╡рд┐рдВрдбреЛ рдПрдХ рдЕрд▓рдЧ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ рдЪрд▓ рд░рд╣реА рд╣реИред рддреЛ рдЖрдкрдХреЛ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдРрдк рд╕реНрдХреЛрдк рдореЗрдВ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдРрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдмрдВрдж рд╣реИред

рдФрд░ рд╕рдВрднрд╡рдд: рдХрдИ рдЕрдиреНрдп рд╕реЗрдирд╛рд░рд┐рдпреЛ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

@ рдорд╛рдЗрдХрд▓-рдУрдЯрд┐рдВрдХ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдареАрдХ рд╡рд╣реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЖрдо рддреМрд░ рдкрд░ рдЕрдкрдиреА рдкреНрд▓рдЧрдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реА рдирдИ FlutterEngine рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рднреАрддрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдЙрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдкрд░ рд╕реАрдзреЗ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рд╕рдВрдпреЛрдЧ рд╕реЗ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ FlutterEngine рдореЗрдВ рд▓рдкреЗрдЯ рджреЗрдВ рдФрд░ рдпрд╣ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЙрди рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрдЧрд╛ред рдлрд╝реНрд▓рдЯрд░_рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкреИрдХреЗрдЬ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдпрд╣реА рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдмрдЬрд╛рдп рдЙрдЪрд┐рдд рдлрд┐рдХреНрд╕ рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдЖрдЬ рдЙрдкрд▓рдмреНрдз рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рдЕрдбрд╝рдЪрдиреЗрдВ, рдУрд╡рд░рд╣реЗрдбреНрд╕ рд╣реИрдВ рдпрд╛ рдЕрдиреНрдпрдерд╛ рдХрдо рд░рдЦрд░рдЦрд╛рд╡ рдпрд╛ рд╕рдорд░реНрдерди рдХреА рдХрдореА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╕рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред)

@ryanheise рдЗрддрдирд╛ flutter_isolate рдореЗрд░реЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рдХреИрд╕реЗ рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛ред рдореБрдЭреЗ рдЕрдкрдиреЗ FCM onBackgroundMessage рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рддреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдСрдирдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореИрд╕реЗрдЬ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЕрд▓рдЧрд╛рд╡ рдкреИрджрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╣рд╛рдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рддреЛ рдореИрдВ рдХреИрд╕реЗ flutter_isolate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВ?

рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ firebase_messaging рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдирд╡реАрдирддрдо рдкреГрд╖реНрдарднреВрдорд┐ рдирд┐рд╖реНрдкрд╛рджрди API рд╕реЗ рдмрд╣реБрдд рдкреАрдЫреЗ рд╣реИред рдЕрдЧрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдирд╛ рдкреНрд▓рдЧрдЗрди рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛, рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдмрд╕ рдлрд┐рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЬрд┐рд╕ рддрд░рд╣ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рдареАрдХ рд╡рд╣реА рд╣реИ рдЬрд╣рд╛рдБ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд▓рдЧрдЗрдиреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред firebase_messaging рдкреНрд▓рдЧрдЗрди рдирд╡реАрдирддрдо рдПрдкреАрдЖрдИ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЙрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдорджрдж рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдпрд╣ рдХрд░ рд╕рдХреВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдХрд▓ рдореЗрд░реА рдкрд╣рд▓реА рдЧрдВрднреАрд░ рдбреАрд▓ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ред

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдВ рдХрд┐ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓реЛрдб рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реАрдбрдореЗ рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреНрд▓рдЧрдЗрди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ FlutterNativeView рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛред рдпрджрд┐ рдЖрдкрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдкреНрд▓рдЧрдЗрди рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдпрджрд┐ рд╡рд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрд░рд╛рдиреЗ v1-рд╢реИрд▓реА рдкреНрд▓рдЧрдЗрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЬреЛрдЦрд┐рдо рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП v2 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред

рдореИрдВрдиреЗ рдЕрдкрдирд╛ Application.kt рдЗрд╕ рддрд░рд╣ рд╕реЗрдЯрдЕрдк рдХрд┐рдпрд╛ рд╣реИ

import `in`.jvapps.system_alert_window.SystemAlertWindowPlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService

import android.os.Build
import android.app.NotificationManager
import android.app.NotificationChannel

public class Application: FlutterApplication(), PluginRegistrantCallback {

   override fun onCreate() {
     super.onCreate()
     FlutterFirebaseMessagingService.setPluginRegistrant(this)
     createNotificationChannels()
     SystemAlertWindowPlugin.setPluginRegistrant(this)
   }

   override fun registerWith(registry: PluginRegistry) {
     FirebaseCloudMessagingPluginRegistrant.registerWith(registry)
     SystemAlertWindowPlugin.registerWith(registry.registrarFor("in.jvapps.system_alert_window"))
   }

   fun createNotificationChannels() {
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val name = "groupChannel"
        val descriptionText = "This is the group channel"
        val importance = NotificationManager.IMPORTANCE_HIGH
        val mChannel = NotificationChannel("59054", name, importance)
        mChannel.description = descriptionText
        val notificationManager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
        notificationManager.createNotificationChannel(mChannel)
    }
  }
}

рдЗрд╕реЗ firebase_messaging рд╕рдорд╕реНрдпрд╛ рдкреГрд╖реНрда рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ 'рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ' рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ 'рд╕реНрдкреЙрди рдЖрдЗрд╕реЛрд▓реЗрдЯ' рд╡рд┐рдзрд┐ рд╣реЛрдЧреАред

рддрдм рдЗрд╕ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдердбреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдкрдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

import 'dart:async';
import 'dart:isolate';

import 'package:flutter/scheduler.dart';
import 'package:flutter/widgets.dart';
import 'package:path_provider/path_provider.dart';

Future<void> _test(SendPort sendPort) async {
  final dir = await getTemporaryDirectory();
  sendPort.send(dir);
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final Completer<Object> completer = Completer<Object>();
  final RawReceivePort receivePort = RawReceivePort(completer.complete);

  final Isolate isolate = await ServicesBinding.instance.spawnIsolate(
    _test,
    receivePort.sendPort,
  );

  print(await completer.future);

  receivePort.close();
  isolate.kill();
}

рд▓реЙрдЧ

Performing hot restart...
Syncing files to device Pixel 4...
Restarted application in 722ms.
I/flutter (11705): Directory: '/data/user/0/com.example.bug/cache'

рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ 'рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ' рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ 'рд╕реНрдкреЙрди рдЖрдЗрд╕реЛрд▓реЗрдЯ' рд╡рд┐рдзрд┐ рд╣реЛрдЧреАред

рддрдм рдЗрд╕ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдердбреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ рдЬрдм рдЖрдкрдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

SchedulerBinding.instance.spawnIsolate

рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛? рдЕрдЧрд░ рдпрд╣ рдореЗрд░реА рдЬрд░реВрд░рддреЛрдВ рдЖрджрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ ..

@Nailik
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрджрд▓реЗрдВ (рд╕рдВрд╕реНрдХрд░рдг 1.17.5 рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ)


рдмрд╛рдЗрдВрдбрд┐рдВрдЧ.рдбрд╛рд░реНрдЯ

``` рдбрд╛рд░реНрдЯ // рдХреЙрдкреАрд░рд╛рдЗрдЯ 2014 рд╕реНрдкрдВрджрди рд▓реЗрдЦрдХред рд╕рд░реНрд╡рд╛рдзрд┐рдХрд╛рд░ рд╕реБрд░рдХреНрд╖рд┐рддред
// рдЗрд╕ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмреАрдПрд╕рдбреА-рд╢реИрд▓реА рд▓рд╛рдЗрд╕реЗрдВрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
// LICENSE рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ред

рдЖрдпрд╛рдд ' рдбрд╛рд░реНрдЯ: async ';
рдЖрдпрд╛рдд ' рдбрд╛рд░реНрдЯ: рдЖрдЗрд╕реЛрд▓реЗрдЯ ';
рдЖрдпрд╛рдд ' рдбрд╛рд░реНрдЯ: typed_data ';
ui рдХреЗ рд░реВрдк рдореЗрдВ ' рдбрд╛рд░реНрдЯ: ui ' рдЖрдпрд╛рдд рдХрд░реЗрдВ;

рдЖрдпрд╛рдд ' рдкреИрдХреЗрдЬ: рд╕реНрдкрдВрджрди/рдлрд╛рдЙрдВрдбреЗрд╢рди.рдбрд╛рд░реНрдЯ ';

рдЖрдпрд╛рдд 'asset_bundle.dart';
рдЖрдпрд╛рдд 'рдмрд╛рдЗрдирд░реА_рдореИрд╕реЗрдВрдЬрд░.рдбрд╛рд░реНрдЯ';
рдЖрдпрд╛рдд 'system_channels.dart';

/// рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕реБрдирддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ [рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рдЗрдирд░реА рдореИрд╕реЗрдВрдЬрд░] рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
///
/// [рд╕рд░реНрд╡рд┐рд╕рдмрд╛рдЗрдВрдбрд┐рдВрдЧ] рдПрдХ [рд▓рд╛рдЗрд╕реЗрдВрд╕рдПрдВрдЯреНрд░реА рдХрд▓реЗрдХреНрдЯрд░] рднреА рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ
/// рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд LICENSE рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд┐рд▓реЗ рд▓рд╛рдЗрд╕реЗрдВрд╕
/// рдмрдВрдбрд▓, рдФрд░ ext.flutter.evict рд╕реЗрд╡рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ
/// [рдмреЗрджрдЦрд╝рд▓ рдХрд░рдирд╛])ред
рдмрд╛рдЗрдВрдбрд┐рдВрдЧрдмреЗрд╕ рдкрд░ рдорд┐рдХреНрд╕рд┐рди рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ {
@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╢реВрдиреНрдп initInstances () {
super.initInstances ();
_рдЗрдВрд╕реНрдЯреЗрдВрд╕ = рдпрд╣;
_DefaultBinaryMessenger = createBinaryMessenger ();
window.onPlatformMessage = defaultBinaryMessenger.handlePlatformMessage;
initLicenses ();
SystemChannels.system.setMessageHandler(handleSystemMessage);
}

/// рд╡рд░реНрддрдорд╛рди [рд╕рд░реНрд╡рд┐рд╕рдмрд╛рдЗрдВрдбрд┐рдВрдЧ], рдпрджрд┐ рдХреЛрдИ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрдЯреЗрдЯрд┐рдХ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрд╕реНрдЯреЗрдВрд╕ => _рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ;
рд╕реНрдереИрддрд┐рдХ рд╕реЗрд╡рд╛рдПрдБ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ _instance;

/// [рдмрд╛рдЗрдирд░реА рдореИрд╕реЗрдВрдЬрд░] рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрджрд╛рд╣рд░рдгред
///
/// рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
/// рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЪреИрдирд▓ рдкрд░ рдХреМрди рд╕реЗ рд╣реИрдВрдбрд▓рд░ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
/// рдпрд╣ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред
рдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ рдХреЛ рдбрд┐рдлреЙрд▓реНрдЯ рдорд┐рд▓рддрд╛ рд╣реИрдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ => _рдбрд┐рдлреЙрд▓реНрдЯрдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░;
рдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ _рдбрд┐рдлрд╝реЙрд▓реНрдЯрдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░;

/// рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ [рдмрд╛рдЗрдирд░реА рдореИрд╕реЗрдВрдЬрд░] рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
/// рдордВрдЪ рд╕рдВрджреЗрд╢ред
@рд╕рдВрд░рдХреНрд╖рд┐рдд
рдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ рдХреНрд░рд┐рдПрдЯ рдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ () {
рд╡рд╛рдкрд╕реА рдХрд╛рдВрд╕реНрдЯ _DefaultBinaryMessenger._();
}

/// рд╣реИрдВрдбрд▓рд░ рдиреЗ [SystemChannels.system] рдкрд░ рдкреНрд░рд╛рдкреНрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд┐рдпрд╛
/// рд╕рдВрджреЗрд╢ рдЪреИрдирд▓ред
///
/// рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@рд╕рдВрд░рдХреНрд╖рд┐рдд
@mustCallSuper
рднрд╡рд┐рд╖реНрдпрд╣реИрдВрдбрд▓рд╕рд┐рд╕реНрдЯрдо рдореИрд╕реЗрдЬ (рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд┐рд╕реНрдЯрдордореИрд╕реЗрдЬ) рдПрд╕рд┐рдВрдХреНрд╕ { }

/// [рд▓рд╛рдЗрд╕реЗрдВрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реА] рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
///
/// рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, [рд╕рд░реНрд╡рд┐рд╕ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ] рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди [initLicenses] рдЬреЛрдбрд╝рддрд╛ рд╣реИ
/// рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди flutter рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рд▓рд╛рдЗрд╕реЗрдВрд╕ред
@рд╕рдВрд░рдХреНрд╖рд┐рдд
@mustCallSuper
рд╢реВрдиреНрдп initLicenses () {
рд▓рд╛рдЗрд╕реЗрдВрд╕ рд░рдЬрд┐рд╕реНрдЯреНрд░реАред рдПрдб рд▓рд╛рдЗрд╕реЗрдВрд╕ (_addLicenses);
}

рдзрд╛рд░рд╛_addLicenses() async* {
// рд╣рдо рдпрд╣рд╛рдВ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рдЯрд╛рд╕реНрдХ рдХреЗ рдмрдЬрд╛рдп)
// рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдкрд░рдд рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдЕрдиреБрд╕реВрдЪрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ
// рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрдкрдиреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ)ред рдЯрд╛рдЗрдорд░
// рд╡реИрд╕реЗ рднреА рд╢реЗрдбреНрдпреВрд▓ рдЯрд╛рд╕реНрдХ рд╣реБрдб рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд░реНрдХ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ
// рдХрд┐ рдпреЗ рд╕рд┐рд░реНрдл рдЖрдЧреЗ рдЪрд▓реЗрдВрдЧреЗ, рдмрдЬрд╛рдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ
// рдЕрдиреНрдп рдХрд╛рд░реНрдп рдЬреЛ рдЪрд▓ рд░рд╣реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ _something_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
// рдпрд╣ рджреЛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ
// рдЗрд╕ рд╕рдордп рдбреЗрдЯрд╛, рдФрд░ рдпрджрд┐ рд╣рдо рдЙрд╕реА рдИрд╡реЗрдВрдЯ рд▓реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
// рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдбреЗрдЯрд╛ рдХреЛ рдЕрдЧрд▓реЗ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реИрдВ
// рдлреНрд░реЗрдо рдорд┐рд╕ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдФрд░ рдЙрдкрд╛рдп рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдХрд╛рдо рдХрд░реЗрдВ
// рдПрдХ рдЕрд▓рдЧ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрдВрддрддрдГ рд╡рд╣рд╛рдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдо рд╣реИрдВ
// рдпрд╣ рджреЗрдЦрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкреГрдердХ рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕рд╕реНрддрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
// рджреЗрдЦреЗрдВ: https://github.com/dart-lang/sdk/issues/31959
// https://github.com/dart-lang/sdk/issues/31960
// TODO (ianh): рдЗрди рдмрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рджреВрд░ рдХрд░реЗрдВред
рдЕрдВрддрд┐рдо рдкреВрд░реНрдгрдХрд░реНрддрд╛рдХрдЪреНрдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ = рдкреВрд░реНрдг рдХрд░рдиреЗ рд╡рд╛рд▓рд╛();
Timer.run(() async {
rawLicenses.complete(rootBundle.loadString('LICENSE', рдХреИрд╢реЗ: рдЭреВрдард╛));
});
рдХрдЪреНрдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВредрднрд╡рд┐рд╖реНрдп;
рдЕрдВрддрд┐рдо рдкреВрд░реНрдгрдХрд░реНрддрд╛> рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рд▓рд╛рдЗрд╕реЗрдВрд╕ = рдХрдВрдкреНрд▓реАрдЯрд░>();
Timer.run(() async {
parsedLicenses.complete (рдЧрдгрдирд╛ (_parseLicenses, рдХрдЪреНрдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рднрд╡рд┐рд╖реНрдп, рдбреАрдмрдЧ рд▓реЗрдмрд▓: 'parseLicenses'));
});
parsedLicenses.рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
рдЙрдкрдЬ* рд╕реНрдЯреНрд░реАрдо.fromIterable (parsedLicenses.future рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ);
}

// рдпрд╣ рдКрдкрд░ _addLicenses рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдерд┐рд░ рд╕реВрдЪреА_parseLicenses (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрдЪреНрдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕) {
рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ _licenseSeparator = '\n' + ('-' * 80) + '\n';
рдЕрдВрддрд┐рдо рд╕реВрдЪреАрдкрд░рд┐рдгрд╛рдо =[];
рдЕрдВрддрд┐рдо рд╕реВрдЪреАрд▓рд╛рдЗрд╕реЗрдВрд╕ = рдХрдЪреНрдЪреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ред рд╡рд┐рднрд╛рдЬрд┐рдд (_licenseSeparator);
рдХреЗ рд▓рд┐рдП (рд▓рд╛рдЗрд╕реЗрдВрд╕ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд╛рдЗрд╕реЗрдВрд╕) {
рдЕрдВрддрд┐рдо рдЕрдВрддрд░ рд╡рд┐рднрд╛рдЬрди = рд▓рд╛рдЗрд╕реЗрдВрд╕ред рдЗрдВрдбреЗрдХреНрд╕рдСрдл ('\ n \ n');
рдЕрдЧрд░ (рд╡рд┐рднрд╛рдЬрди> = 0) {
result.add(LicenseEntryWithLineBreaks(
рд▓рд╛рдЗрд╕реЗрдВрд╕ред рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ (0, рд╡рд┐рднрд╛рдЬрд┐рдд)ред рд╡рд┐рднрд╛рдЬрд┐рдд ('\ n'),
рд▓рд╛рдЗрд╕реЗрдВрд╕ред рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╡рд┐рднрд╛рдЬрди + 2),
));
} рдЕрдиреНрдпрдерд╛ {
result.add(LicenseEntryWithLineBreaks(const .)[], рд▓рд╛рдЗрд╕реЗрдВрд╕));
}
}
рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо;
}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╢реВрдиреНрдп initServiceExtensions () {
super.initServiceExtensions ();

assert(() {
  registerStringServiceExtension(
    // ext.flutter.evict value=foo.png will cause foo.png to be evicted from
    // the rootBundle cache and cause the entire image cache to be cleared.
    // This is used by hot reload mode to clear out the cache of resources
    // that have changed.
    name: 'evict',
    getter: () async => '',
    setter: (String value) async {
      evict(value);
    },
  );
  return true;
}());

}

/// ext.flutter.evict рд╕реЗрд╡рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
///
/// рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ flutter рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╣реЙрдЯ рд░реАрд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЪрд┐рддреНрд░
/// рдЬреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдмрджрд▓ рдЧрдП рд╣реИрдВ, рдХреИрд╢ рд╕реЗ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
@рд╕рдВрд░рдХреНрд╖рд┐рдд
@mustCallSuper
рд╢реВрдиреНрдп рдмреЗрджрдЦрд▓ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐) {
rootBundle.evict (рд╕рдВрдкрддреНрддрд┐);
}

рднрд╡рд┐рд╖реНрдпрд╕реНрдкреЙрдирдЖрдЗрд╕реЛрд▓реЗрдЯ(
рдлреНрдпреВрдЪрд░рдСрд░рдПрдВрдЯреНрд░реАрдкреЙрдЗрдВрдЯ (рдЯреА рд╕рдВрджреЗрд╢),
рдЯреА рд╕рдВрджреЗрд╢, {
рдмреВрд▓ рд░реБрдХрд╛ рд╣реБрдЖ = рдЭреВрдард╛,
рдмреВрд▓ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдШрд╛рддрдХ,
рд╕реЗрдВрдбрдкреЛрд░реНрдЯ рдСрди рдПрдХреНрдЬрд┐рдЯ,
рд╕реЗрдВрдбрдкреЛрд░реНрдЯ рдСрди рдПрд░рд░,
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдбреАрдмрдЧрдирд╛рдо,
}) {
рдЬреЛрд░ рджреЗрдирд╛ (
_isMainIsolate,
'рдЕрд▓рдЧрд╛рд╡ рдХреЗ рдХрдИ рд╕реНрддрд░ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ',
);

final RawReceivePort messageReceiver = RawReceivePort(
  (Object receivedMessage) async {
    if (receivedMessage is SendPort) {
      receivedMessage.send(
        _IsolateStarter<T>(
          ui.PluginUtilities.getCallbackHandle(entryPoint),
          message,
        ),
      );
    } else if (receivedMessage is _Message) {
      final ByteData result = await defaultBinaryMessenger.send(
        receivedMessage.channel,
        receivedMessage.message,
      );
      receivedMessage.sendPort.send(result);
    }
  },
);
RawReceivePort onExitReceiver;
onExitReceiver = RawReceivePort(
  (Object message) {
    onExit?.send(message);

    onExitReceiver.close();
    messageReceiver.close();
  },
);

return Isolate.spawn(
  _startIsolate,
  messageReceiver.sendPort,
  paused: paused,
  errorsAreFatal: true,
  onExit: onExitReceiver.sendPort,
  onError: onError,
  debugName: debugName,
);

}
}

рднрд╡рд┐рд╖реНрдп_рд╕реНрдЯрд╛рд░реНрдЯрдЖрдЗрд╕реЛрд▓реЗрдЯ(рд╕реЗрдВрдбрдкреЛрд░реНрдЯ рд╕реЗрдВрдбрдкреЛрд░реНрдЯ) рдПрд╕рд┐рдВрдХ {
_sendPortToMainIsolate = SendPort;
_рдЖрдЗрд╕реЛрд▓реЗрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ ();

рдЕрдВрддрд┐рдо рдкреВрд░реНрдгрдХрд░реНрддрд╛<_IsolateStarter> рдкреВрд░реНрдг рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ =
рдХрдВрдкреНрд▓реАрдЯрд░<_рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░>();

рдЕрдВрддрд┐рдо RawReceivePort рдкреНрд░рд╛рдкреНрдд рдкреЛрд░реНрдЯ = RawReceivePort (
(рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реНрдЯрд╛рд░реНрдЯрд░) {
рдЬреЛрд░ рджреЗрдВ (рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░ _рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░ рд╣реИ);
Completer.complete (рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ _IsolateStarter);
},
);

рд╕реЗрдВрдбрдкреЛрд░реНрдЯ.рд╕реЗрдВрдб (рдкреНрд░рд╛рдкреНрдд рдкреЛрд░реНрдЯ.рд╕реЗрдВрдбрдкреЛрд░реНрдЯ);

рдЕрдВрддрд┐рдо _рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░ = рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВред рднрд╡рд┐рд╖реНрдп;

рд░рд┐рд╕реАрд╡рдкреЛрд░реНрдЯ.рдХреНрд▓реЛрдЬрд╝ ();

рдЕрдВрддрд┐рдо рдлрд▓рди рдлрд▓рди =
ui.PluginUtilities.getCallbackFromHandle(isolateStarter.callbackHandle);

рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдорд╛рд░реЛрд╣ (рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░.рдореИрд╕реЗрдЬ);
}

рд╕реЗрдВрдбрдкреЛрд░реНрдЯ _sendPortToMainIsolate;

рдмреВрд▓ get _isMainIsolate => _sendPortToMainIsolate == null;

рдХреНрд▓рд╛рд╕ _рдЖрдЗрд╕реЛрд▓реЗрдЯрд╕реНрдЯрд╛рд░реНрдЯрд░{
_IsolateStarter(this.callbackHandle, this.message);

рдЕрдВрддрд┐рдо ui.CallbackHandle рдХреЙрд▓рдмреИрдХрд╣реИрдВрдбрд▓;
рдЕрдВрддрд┐рдо рдЯреА рд╕рдВрджреЗрд╢;
}

рдХрдХреНрд╖рд╛ _рд╕рдВрджреЗрд╢ {
_рд╕рдВрджреЗрд╢(
рдпрд╣.рдЪреИрдирд▓,
рдпреЗ рд╕рдВрджреЗрд╢,
рдпрд╣.рднреЗрдЬреЗрдВрдкреЛрд░реНрдЯ,
);

рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓;
рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рд╕рдВрджреЗрд╢;
рдЕрдВрддрд┐рдо рд╕реЗрдВрдбрдкреЛрд░реНрдЯ рд╕реЗрдВрдбрдкреЛрд░реНрдЯ;
}

рдХреНрд▓рд╛рд╕ _IsolateBinding, BindingBase рдХреЛ ServicesBinding рдХреЗ рд╕рд╛рде рдмрдврд╝рд╛рддрд╛ рд╣реИ {}

/// [рдмрд╛рдЗрдирд░реА рдореИрд╕реЗрдВрдЬрд░] рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред
///
/// рдпрд╣ рдореИрд╕реЗрдВрдЬрд░ рдРрдк-рд╕рд╛рдЗрдб рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╕рд╛рдЗрдб рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ рдФрд░
/// рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕рд╛рдЗрдб рд╕реЗ рдЙрдкрдпреБрдХреНрдд рддрдХ рднреЗрдЬрддрд╛ рд╣реИ
/// рд╣реИрдВрдбрд▓рд░ред
рдХреНрд▓рд╛рд╕ _DefaultBinaryMessenger рдмрд╛рдЗрдирд░реАрдореИрд╕реЗрдВрдЬрд░ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ {
const _DefaultBinaryMessenger._();

// рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ред
// рдпрд╣ рд╕реНрдерд┐рд░ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХреЗред
рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рдирдХреНрд╢рд╛_рд╣реИрдВрдбрд▓рд░ =
{};

// рдореЙрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред
// рдпрд╣ рд╕реНрдерд┐рд░ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХреЗред
рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рдирдХреНрд╢рд╛_рдореЙрдХрд╣реИрдВрдбрд▓рд░ =
{};

рднрд╡рд┐рд╖реНрдп_sendPlatformMessage (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓, рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рд╕рдВрджреЗрд╢) {
рдЕрдВрддрд┐рдо рдкреВрд░реНрдгрдХрд░реНрддрд╛рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ = рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛();

if (_isMainIsolate) {
  // ui.window is accessed directly instead of using ServicesBinding.instance.window
  // because this method might be invoked before any binding is initialized.
  // This issue was reported in #27541. It is not ideal to statically access
  // ui.window because the Window may be dependency injected elsewhere with
  // a different instance. However, static access at this location seems to be
  // the least bad option.
  ui.window.sendPlatformMessage(channel, message, (ByteData reply) {
    try {
      completer.complete(reply);
    } catch (exception, stack) {
      FlutterError.reportError(FlutterErrorDetails(
        exception: exception,
        stack: stack,
        library: 'services library',
        context:
            ErrorDescription('during a platform message response callback'),
      ));
    }
  });
} else {
  RawReceivePort receivePort;
  receivePort = RawReceivePort(
    (Object message) async {
      assert(message is ByteData);
      completer.complete(message as ByteData);
      receivePort.close();
    },
  );
  _sendPortToMainIsolate.send(
    _Message(channel, message, receivePort.sendPort),
  );
}

return completer.future;

}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рднрд╡рд┐рд╖реНрдпрд╣реИрдВрдбрд▓рдкреНрд▓реЗрдЯрдлреЙрд░реНрдордореИрд╕реЗрдЬ(
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓,
рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рдбреЗрдЯрд╛,
ui.PlatformMessageResponseCallback рдХреЙрд▓рдмреИрдХ,
) рдПрд╕рд┐рдВрдХ {
рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛;
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢рд╣реИрдВрдбрд▓рд░ рд╣реИрдВрдбрд▓рд░ = _рд╣реИрдВрдбрд▓рд░ [рдЪреИрдирд▓];
рдЕрдЧрд░ (рд╣реИрдВрдбрд▓рд░! = рд╢реВрдиреНрдп) {
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИрдВрдбрд▓рд░ (рдбреЗрдЯрд╛);
} рдЕрдиреНрдпрдерд╛ {
ui.channelBuffers.push (рдЪреИрдирд▓, рдбреЗрдЯрд╛, рдХреЙрд▓рдмреИрдХ);
рдХреЙрд▓рдмреИрдХ = рд╢реВрдиреНрдп;
}
} рдХреИрдЪ (рдЕрдкрд╡рд╛рдж, рд╕реНрдЯреИрдХ) {
FlutterError.reportError(FlutterErrorDetails(
рдЕрдкрд╡рд╛рдж: рдЕрдкрд╡рд╛рдж,
рдвреЗрд░: рдвреЗрд░,
рдкреБрд╕реНрддрдХрд╛рд▓рдп: 'рд╕реЗрд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп',
рд╕рдВрджрд░реНрдн: рддреНрд░реБрдЯрд┐ рд╡рд┐рд╡рд░рдг ('рдПрдХ рдордВрдЪ рд╕рдВрджреЗрд╢ рдХреЙрд▓рдмреИрдХ рдХреЗ рджреМрд░рд╛рди'),
));
} рдЖрдЦрд┐рд░рдХрд╛рд░ {
рдЕрдЧрд░ (рдХреЙрд▓рдмреИрдХ! = рд╢реВрдиреНрдп) {
рдХреЙрд▓рдмреИрдХ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛);
}
}
}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рднрд╡рд┐рд╖реНрдпрднреЗрдЬреЗрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓, рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рд╕рдВрджреЗрд╢) {
рдЕрдВрддрд┐рдо рд╕рдВрджреЗрд╢рд╣реИрдВрдбрд▓рд░ рд╣реИрдВрдбрд▓рд░ = _mockHandlers [рдЪреИрдирд▓];
рдЕрдЧрд░ (рд╣реИрдВрдбрд▓рд░! = рд╢реВрдиреНрдп)
рд╡рд╛рдкрд╕реА рд╣реИрдВрдбрд▓рд░ (рд╕рдВрджреЗрд╢);
рд╡рд╛рдкрд╕реА _sendPlatformMessage (рдЪреИрдирд▓, рд╕рдВрджреЗрд╢);
}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╢реВрдиреНрдп рд╕реЗрдЯрдореИрд╕реЗрдЬрд╣реИрдВрдбрд▓рд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓, рдореИрд╕реЗрдЬрд╣реИрдВрдбрд▓рд░ рд╣реИрдВрдбрд▓рд░) {
рдЕрдЧрд░ (рд╣реИрдВрдбрд▓рд░ == рд╢реВрдиреНрдп)
_handlers.remove (рдЪреИрдирд▓);
рдЕрдиреНрдпрдерд╛
_рд╣реИрдВрдбрд▓рд░ [рдЪреИрдирд▓] = рд╣реИрдВрдбрд▓рд░;
ui.channelBuffers.drain (рдЪреИрдирд▓, (рдмрд╛рдЗрдЯрдбреЗрдЯрд╛ рдбреЗрдЯрд╛, ui.PlatformMessageResponseCallback рдХреЙрд▓рдмреИрдХ) async {
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рд╣реИрдВрдбрд▓рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдордореИрд╕реЗрдЬ (рдЪреИрдирд▓, рдбреЗрдЯрд╛, рдХреЙрд▓рдмреИрдХ);
});
}

@ рдУрд╡рд░рд░рд╛рдЗрдб
рд╢реВрдиреНрдп setMockMessageHandler (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪреИрдирд▓, MessageHandler рд╣реИрдВрдбрд▓рд░) {
рдЕрдЧрд░ (рд╣реИрдВрдбрд▓рд░ == рд╢реВрдиреНрдп)
_mockHandlers.remove (рдЪреИрдирд▓);
рдЕрдиреНрдпрдерд╛
_mockHandlers [рдЪреИрдирд▓] = рд╣реИрдВрдбрд▓рд░;
}
}
```

рдореЗрд░реЗ рдкрд╛рд╕ 1.21 рд╕реНрдкрдВрджрди рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рдЕрдм рдПрдХ рд╕рдорд╕реНрдпрд╛ рдмрд╛рдХреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ _IsolateBinding рдореЗрдВ BindingBase рдореЗрдердбреНрд╕ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд╛рдпрдм рд╣реИрдВ ...

рдореБрдЭреЗ sth рдЬреИрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ

Error: The non-abstract class '_IsolateBinding' is missing implementations for these members:
 - BindingBase with ServicesBinding.SchedulerBinding.addPersistentFrameCallback

рд▓рдЧрднрдЧ 30 рдмрд╛рд░ред

рдЕрдВрдд рдореЗрдВ рдХрдВрд╕реЛрд▓ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ

/C:/flutter/packages/flutter/lib/src/services/binding.dart:341:7: Error: 'BindingBase' doesn't implement 'SchedulerBinding' so it can't be used with 'ServicesBinding'.
 - 'BindingBase' is from 'package:flutter/src/foundation/binding.dart' ('/C:/flutter/packages/flutter/lib/src/foundation/binding.dart').
 - 'SchedulerBinding' is from 'package:flutter/src/scheduler/binding.dart' ('/C:/flutter/packages/flutter/lib/src/scheduler/binding.dart').
 - 'ServicesBinding' is from 'package:flutter/src/services/binding.dart' ('/C:/flutter/packages/flutter/lib/src/services/binding.dart').
class _IsolateBinding extends BindingBase with ServicesBinding {}

рдореБрдЭреЗ 100% рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ _IsolateBinding() рдореЗрдВ _startIsolate рдХреА рдХреЙрд▓ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп ServicesBinding.defaultBinaryMessenger was accessed before the binding was initialized. рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорд┐рдХреНрд╕рд┐рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдЕрднреА рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдпреЗ, рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?


рдирдИ рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (рдЕрдм рддрдХ)

// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// <strong i="24">@dart</strong> = 2.8

import 'dart:async';
import 'dart:isolate';
import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:flutter/foundation.dart';
import 'package:flutter/scheduler.dart';

import 'asset_bundle.dart';
import 'binary_messenger.dart';
import 'restoration.dart';
import 'system_channels.dart';

/// Listens for platform messages and directs them to the [defaultBinaryMessenger].
///
/// The [ServicesBinding] also registers a [LicenseEntryCollector] that exposes
/// the licenses found in the `LICENSE` file stored at the root of the asset
/// bundle, and implements the `ext.flutter.evict` service extension (see
/// [evict]).
mixin ServicesBinding on BindingBase, SchedulerBinding {
  <strong i="25">@override</strong>
  void initInstances() {
    super.initInstances();
    _instance = this;
    _defaultBinaryMessenger = createBinaryMessenger();
    _restorationManager = createRestorationManager();
    window.onPlatformMessage = defaultBinaryMessenger.handlePlatformMessage;
    initLicenses();
    SystemChannels.system.setMessageHandler(handleSystemMessage);
    SystemChannels.lifecycle.setMessageHandler(_handleLifecycleMessage);
    readInitialLifecycleStateFromNativeWindow();
  }

  /// The current [ServicesBinding], if one has been created.
  static ServicesBinding get instance => _instance;
  static ServicesBinding _instance;

  /// The default instance of [BinaryMessenger].
  ///
  /// This is used to send messages from the application to the platform, and
  /// keeps track of which handlers have been registered on each channel so
  /// it may dispatch incoming messages to the registered handler.
  BinaryMessenger get defaultBinaryMessenger => _defaultBinaryMessenger;
  BinaryMessenger _defaultBinaryMessenger;

  /// Creates a default [BinaryMessenger] instance that can be used for sending
  /// platform messages.
  <strong i="26">@protected</strong>
  BinaryMessenger createBinaryMessenger() {
    return const _DefaultBinaryMessenger._();
  }

  /// Called when the operating system notifies the application of a memory
  /// pressure situation.
  ///
  /// This method exposes the `memoryPressure` notification from
  /// [SystemChannels.system].
  <strong i="27">@protected</strong>
  <strong i="28">@mustCallSuper</strong>
  void handleMemoryPressure() { }

  /// Handler called for messages received on the [SystemChannels.system]
  /// message channel.
  ///
  /// Other bindings may override this to respond to incoming system messages.
  <strong i="29">@protected</strong>
  <strong i="30">@mustCallSuper</strong>
  Future<void> handleSystemMessage(Object systemMessage) async {
    final Map<String, dynamic> message = systemMessage as Map<String, dynamic>;
    final String type = message['type'] as String;
    switch (type) {
      case 'memoryPressure':
        handleMemoryPressure();
        break;
    }
    return;
  }

  /// Adds relevant licenses to the [LicenseRegistry].
  ///
  /// By default, the [ServicesBinding]'s implementation of [initLicenses] adds
  /// all the licenses collected by the `flutter` tool during compilation.
  <strong i="31">@protected</strong>
  <strong i="32">@mustCallSuper</strong>
  void initLicenses() {
    LicenseRegistry.addLicense(_addLicenses);
  }

  Stream<LicenseEntry> _addLicenses() async* {
    // We use timers here (rather than scheduleTask from the scheduler binding)
    // because the services layer can't use the scheduler binding (the scheduler
    // binding uses the services layer to manage its lifecycle events). Timers
    // are what scheduleTask uses under the hood anyway. The only difference is
    // that these will just run next, instead of being prioritized relative to
    // the other tasks that might be running. Using _something_ here to break
    // this into two parts is important because isolates take a while to copy
    // data at the moment, and if we receive the data in the same event loop
    // iteration as we send the data to the next isolate, we are definitely
    // going to miss frames. Another solution would be to have the work all
    // happen in one isolate, and we may go there eventually, but first we are
    // going to see if isolate communication can be made cheaper.
    // See: https://github.com/dart-lang/sdk/issues/31959
    //      https://github.com/dart-lang/sdk/issues/31960
    // TODO(ianh): Remove this complexity once these bugs are fixed.
    final Completer<String> rawLicenses = Completer<String>();
    scheduleTask(() async {
      rawLicenses.complete(await rootBundle.loadString('NOTICES', cache: false));
    }, Priority.animation);
    await rawLicenses.future;
    final Completer<List<LicenseEntry>> parsedLicenses = Completer<List<LicenseEntry>>();
    scheduleTask(() async {
      parsedLicenses.complete(compute(_parseLicenses, await rawLicenses.future, debugLabel: 'parseLicenses'));
    }, Priority.animation);
    await parsedLicenses.future;
    yield* Stream<LicenseEntry>.fromIterable(await parsedLicenses.future);
  }

  // This is run in another isolate created by _addLicenses above.
  static List<LicenseEntry> _parseLicenses(String rawLicenses) {
    final String _licenseSeparator = '\n' + ('-' * 80) + '\n';
    final List<LicenseEntry> result = <LicenseEntry>[];
    final List<String> licenses = rawLicenses.split(_licenseSeparator);
    for (final String license in licenses) {
      final int split = license.indexOf('\n\n');
      if (split >= 0) {
        result.add(LicenseEntryWithLineBreaks(
          license.substring(0, split).split('\n'),
          license.substring(split + 2),
        ));
      } else {
        result.add(LicenseEntryWithLineBreaks(const <String>[], license));
      }
    }
    return result;
  }

  <strong i="33">@override</strong>
  void initServiceExtensions() {
    super.initServiceExtensions();

    assert(() {
      registerStringServiceExtension(
        // ext.flutter.evict value=foo.png will cause foo.png to be evicted from
        // the rootBundle cache and cause the entire image cache to be cleared.
        // This is used by hot reload mode to clear out the cache of resources
        // that have changed.
        name: 'evict',
        getter: () async => '',
        setter: (String value) async {
          evict(value);
        },
      );
      return true;
    }());
  }

  /// Called in response to the `ext.flutter.evict` service extension.
  ///
  /// This is used by the `flutter` tool during hot reload so that any images
  /// that have changed on disk get cleared from caches.
  <strong i="34">@protected</strong>
  <strong i="35">@mustCallSuper</strong>
  void evict(String asset) {
    rootBundle.evict(asset);
  }

  Future<Isolate> spawnIsolate<T>(
      FutureOr<void> entryPoint(T message),
      T message, {
        bool paused = false,
        bool errorsAreFatal,
        SendPort onExit,
        SendPort onError,
        String debugName,
      }) {
    assert(
    _isMainIsolate,
    'Can\'t make multiple levels of isolates',
    );

    final RawReceivePort messageReceiver = RawReceivePort(
          (Object receivedMessage) async {
        if (receivedMessage is SendPort) {
          receivedMessage.send(
            _IsolateStarter<T>(
              ui.PluginUtilities.getCallbackHandle(entryPoint),
              message,
            ),
          );
        } else if (receivedMessage is _Message) {
          final ByteData result = await defaultBinaryMessenger.send(
            receivedMessage.channel,
            receivedMessage.message,
          );
          receivedMessage.sendPort.send(result);
        }
      },
    );
    RawReceivePort onExitReceiver;
    onExitReceiver = RawReceivePort(
          (Object message) {
        onExit?.send(message);

        onExitReceiver.close();
        messageReceiver.close();
      },
    );

    return Isolate.spawn(
      _startIsolate,
      messageReceiver.sendPort,
      paused: paused,
      errorsAreFatal: true,
      onExit: onExitReceiver.sendPort,
      onError: onError,
      debugName: debugName,
    );
  }



  // App life cycle

  /// Initializes the [lifecycleState] with the [Window.initialLifecycleState]
  /// from the window.
  ///
  /// Once the [lifecycleState] is populated through any means (including this
  /// method), this method will do nothing. This is because the
  /// [Window.initialLifecycleState] may already be stale and it no longer makes
  /// sense to use the initial state at dart vm startup as the current state
  /// anymore.
  ///
  /// The latest state should be obtained by subscribing to
  /// [WidgetsBindingObserver.didChangeAppLifecycleState].
  <strong i="36">@protected</strong>
  void readInitialLifecycleStateFromNativeWindow() {
    if (lifecycleState != null) {
      return;
    }
    final AppLifecycleState state = _parseAppLifecycleMessage(window.initialLifecycleState);
    if (state != null) {
      handleAppLifecycleStateChanged(state);
    }
  }

  Future<String> _handleLifecycleMessage(String message) async {
    handleAppLifecycleStateChanged(_parseAppLifecycleMessage(message));
    return null;
  }

  static AppLifecycleState _parseAppLifecycleMessage(String message) {
    switch (message) {
      case 'AppLifecycleState.paused':
        return AppLifecycleState.paused;
      case 'AppLifecycleState.resumed':
        return AppLifecycleState.resumed;
      case 'AppLifecycleState.inactive':
        return AppLifecycleState.inactive;
      case 'AppLifecycleState.detached':
        return AppLifecycleState.detached;
    }
    return null;
  }

  /// The [RestorationManager] synchronizes the restoration data between
  /// engine and framework.
  ///
  /// See the docs for [RestorationManager] for a discussion of restoration
  /// state and how it is organized in Flutter.
  ///
  /// To use a different [RestorationManager] subclasses can override
  /// [createRestorationManager], which is called to create the instance
  /// returned by this getter.
  RestorationManager get restorationManager => _restorationManager;
  RestorationManager _restorationManager;

  /// Creates the [RestorationManager] instance available via
  /// [restorationManager].
  ///
  /// Can be overriden in subclasses to create a different [RestorationManager].
  <strong i="37">@protected</strong>
  RestorationManager createRestorationManager() {
    return RestorationManager();
  }
}

Future<void> _startIsolate<T>(SendPort sendPort) async {
  _sendPortToMainIsolate = sendPort;
  _IsolateBinding();

  final Completer<_IsolateStarter<T>> completer =
  Completer<_IsolateStarter<T>>();

  final RawReceivePort receivePort = RawReceivePort(
        (Object isolateStarter) {
      assert(isolateStarter is _IsolateStarter<T>);
      completer.complete(isolateStarter as _IsolateStarter<T>);
    },
  );

  sendPort.send(receivePort.sendPort);

  final _IsolateStarter<T> isolateStarter = await completer.future;

  receivePort.close();

  final Function function =
  ui.PluginUtilities.getCallbackFromHandle(isolateStarter.callbackHandle);

  await function(isolateStarter.message);
}

SendPort _sendPortToMainIsolate;

bool get _isMainIsolate => _sendPortToMainIsolate == null;

class _IsolateStarter<T> {
  _IsolateStarter(this.callbackHandle, this.message);

  final ui.CallbackHandle callbackHandle;
  final T message;
}

class _Message {
  _Message(
      this.channel,
      this.message,
      this.sendPort,
      );

  final String channel;
  final ByteData message;
  final SendPort sendPort;
}

//TODO not working
class _IsolateBinding extends BindingBase with ServicesBinding {}

/// The default implementation of [BinaryMessenger].
///
/// This messenger sends messages from the app-side to the platform-side and
/// dispatches incoming messages from the platform-side to the appropriate
/// handler.
class _DefaultBinaryMessenger extends BinaryMessenger {
  const _DefaultBinaryMessenger._();

  // Handlers for incoming messages from platform plugins.
  // This is static so that this class can have a const constructor.
  static final Map<String, MessageHandler> _handlers =
  <String, MessageHandler>{};

  // Mock handlers that intercept and respond to outgoing messages.
  // This is static so that this class can have a const constructor.
  static final Map<String, MessageHandler> _mockHandlers =
  <String, MessageHandler>{};

  Future<ByteData> _sendPlatformMessage(String channel, ByteData message) {
    final Completer<ByteData> completer = Completer<ByteData>();

    if (_isMainIsolate) {
      // ui.window is accessed directly instead of using ServicesBinding.instance.window
      // because this method might be invoked before any binding is initialized.
      // This issue was reported in #27541. It is not ideal to statically access
      // ui.window because the Window may be dependency injected elsewhere with
      // a different instance. However, static access at this location seems to be
      // the least bad option.
      ui.window.sendPlatformMessage(channel, message, (ByteData reply) {
        try {
          completer.complete(reply);
        } catch (exception, stack) {
          FlutterError.reportError(FlutterErrorDetails(
            exception: exception,
            stack: stack,
            library: 'services library',
            context:
            ErrorDescription('during a platform message response callback'),
          ));
        }
      });
    } else {
      RawReceivePort receivePort;
      receivePort = RawReceivePort(
            (Object message) async {
          assert(message is ByteData);
          completer.complete(message as ByteData);
          receivePort.close();
        },
      );
      _sendPortToMainIsolate.send(
        _Message(channel, message, receivePort.sendPort),
      );
    }

    return completer.future;
  }

  <strong i="38">@override</strong>
  Future<void> handlePlatformMessage(
      String channel,
      ByteData data,
      ui.PlatformMessageResponseCallback callback,
      ) async {
    ByteData response;
    try {
      final MessageHandler handler = _handlers[channel];
      if (handler != null) {
        response = await handler(data);
      } else {
        ui.channelBuffers.push(channel, data, callback);
        callback = null;
      }
    } catch (exception, stack) {
      FlutterError.reportError(FlutterErrorDetails(
        exception: exception,
        stack: stack,
        library: 'services library',
        context: ErrorDescription('during a platform message callback'),
      ));
    } finally {
      if (callback != null) {
        callback(response);
      }
    }
  }

  <strong i="39">@override</strong>
  Future<ByteData> send(String channel, ByteData message) {
    final MessageHandler handler = _mockHandlers[channel];
    if (handler != null)
      return handler(message);
    return _sendPlatformMessage(channel, message);
  }

  <strong i="40">@override</strong>
  void setMessageHandler(String channel, MessageHandler handler) {
    if (handler == null)
      _handlers.remove(channel);
    else
      _handlers[channel] = handler;
    ui.channelBuffers.drain(channel, (ByteData data, ui.PlatformMessageResponseCallback callback) async {
      await handlePlatformMessage(channel, data, callback);
    });
  }

  <strong i="41">@override</strong>
  void setMockMessageHandler(String channel, MessageHandler handler) {
    if (handler == null)
      _mockHandlers.remove(channel);
    else
      _mockHandlers[channel] = handler;
  }

  <strong i="42">@override</strong>
  bool checkMessageHandler(String channel, MessageHandler handler) => _handlers[channel] == handler;

  <strong i="43">@override</strong>
  bool checkMockMessageHandler(String channel, MessageHandler handler) => _mockHandlers[channel] == handler;
}

@Nailik
рдлрд┐рд▓рд╣рд╛рд▓, рдореИрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрди рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдкрдВрджрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рд╕реНрдкрдВрджрди рдЙрдкрдХрд░рдг (рдЬреИрд╕реЗ рджреЗрд╡рдЯреВрд▓ рдХрд╣рддреЗ рд╣реИрдВ) рдиреЗ рдЗрд╕ рдЕрд╡рд░реЛрдзрдХ рдХреЛ рдХрднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рд░рд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдмрдЧреНрд╕ рдХреЛ рддрднреА рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╣реЛрдВред

рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдврд╛рдВрдЪрд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИред
рддреЛ рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ https://github.com/flutter/flutter/issues/18761#issuecomment -639248761 рдпрд╣ рдПрдХ P3 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реНрдкрдВрджрди рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рд╕реНрдкрдВрджрди рдЙрдкрдХрд░рдг (рдЬреИрд╕реЗ рджреЗрд╡рдЯреВрд▓ рдХрд╣рддреЗ рд╣реИрдВ) рдиреЗ рдЗрд╕ рдЕрд╡рд░реЛрдзрдХ рдХреЛ рдХрднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рдорд╛рд░рд╛ред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдмрдЧреНрд╕ рдХреЛ рддрднреА рдареАрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрдм рд╡реЗ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рд╣реЛрдВред

рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдРрдкреНрд╕ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдЕрдзрд┐рдХ рд╣реИред рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рд▓реЗрдХрд┐рди "рд╕рдорд╛рдзрд╛рди" рд╣реИрдВред рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХрдИ рдРрдкреНрд╕ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдореИрдВ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ +1 рдЕрднреА рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИред (рдЬреИрд╕реЗ https://github.com/flutter/flutter/issues/13937#issuecomment-635683123)ред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдФрд░ рд╣реЗрдбрд▓реЗрд╕ рд░рдирдЯрд╛рдЗрдо (рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдореИрдиреЗрдЬ рдХрд░реЗрдВ) рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЗрдореЛ рдореЗрдВ рдЕрднреА рднреА рдереЛрдбрд╝реА рдХрдореА рд╣реИ рдФрд░ рдлрд╛рдпрд░рдмреЗрд╕ рдореИрд╕реЗрдЬрд┐рдВрдЧ рд╕реНрдЯрдл рдПрдХ рдмреБрд░рд╛ рд╕рдкрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдЗрдВрдЬрди рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ тАНтЩВя╕П

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдкрдВрджрди рдЯреАрдо рдХреЛ рдХреЛрд╕рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдВ, рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ, рдФрд░ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ... рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдкреАрдЖрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕реНрдкрдВрджрди рдЯреАрдо рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рди рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВ

рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

рдПрдХ рдореБрдЦреНрдп рдкреГрдердХ рдФрд░ рдПрдХ рдЗрдВрдЬрди рд╣реИрдВред
рдЕрдЧрд░ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рддреЛ рд╡рд╣ рдЗрдВрдЬрди рд╕реЗ рдкреВрдЫрддрд╛ рд╣реИред
рдЕрдЧрд░ рдЗрдВрдЬрди рдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рддреЛ рд╡рд╣ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдорд╛рдВрдЧрддрд╛ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рд╣реИ:
2 рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдФрд░ рдПрдХ рдЗрдВрдЬрди рд╣реИред
рдЕрдЧрд░ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП рддреЛ рд╡рд╣ рдЗрдВрдЬрди рд╕реЗ рдкреВрдЫрддрд╛ рд╣реИред
рдЕрдЧрд░ рдЗрдВрдЬрди рдХреЛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рддреЛ рдЙрд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рджреЛрдиреЛрдВ рд╕реЗ рдкреВрдЫреЛ? рдлрд┐рд░ рдХрд┐рд╕рдХрд╛ рдЬрд╡рд╛рдм рд▓реЗрдВ?
рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд▓рдЧ рдкреВрдЫреЛ? рдлрд┐рд░ рдХреМрди рд╕рд╛?

@hpoul рдореБрдЭреЗ рдЕрд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдПрдВрдбреНрд░реЙрдЗрдб/рдЖрдИрдУрдПрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╢реБрд░реБрдЖрддреА рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдРрдк рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдврд╛рдВрдЪрд╛ рдЪреБрдирд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░реЗ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рдХреЛ рдареАрдХ рдХрд░реЗ рдпрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ, рдЬрд╣рд╛рдВ рдЖрдк рдЕрд╡рд░реБрджреНрдз рд╣реИрдВ рдФрд░ рдЬрдЯрд┐рд▓ "рд╕рдорд╛рдзрд╛рди" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪреЗ рджреНрд╡рд╛рд░рд╛ рдордЬрдмреВрд░ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рд╕реАрдЦрдирд╛ рд╣реИ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдпрд╛ рдЕрдиреНрдп рдмреНрд▓реЙрдЧреЛрдВ рдкрд░ рдпрд╣рд╛рдВ рдпрд╛ рдХрд╣реАрдВ рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдкреИрдХреЗрдЬреЛрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХреЗрд╡рд▓ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреА рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рднреА рдХрд░ рд╕рдХрддреА рд╣реИрдВред

рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдФрд░ рдЖрдИрдУрдПрд╕ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ, рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХрддрд╛рд░реЛрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдмрд╣реБрдд рдЕрдиреБрднрд╡ рд╣реИ, рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рд╕реНрдкрдВрджрди рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рдЬрдирд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдирд╣реАрдВ рд╣реИрдВред

рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рд╣рдЯрдХрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рд░ рджреВрд╕рд░реЗ рдореБрджреНрджреЗ рдореЗрдВ рдЭреВрдареЗ +1 рд╣реИрдВ, рдЬреЛ рдореБрджреНрджреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдореБрджреНрджрд╛ рдЕрднреА рднреА рд╢реАрд░реНрд╖ рдкрд░ рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рдирдорд╕реНрддреЗ @phanirithvij

Flutter_isolate рдКрдкрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ рдФрд░ 2019 рдХреЗ рдлрд░рд╡рд░реА рд╕реЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред рдпрд╣ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореИрдВ рд░реАрдбрдореЗ рдХреЛ рдХреЙрдкреА рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╕реАрдзрд╛ рд▓рдЧрддрд╛ рд╣реИ:

FlutterIsolate рд╕реНрдкрдВрджрди рдореЗрдВ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдкрдВрджрди рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдпрд╣ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓реЛрдВ рдХреЛ рдПрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдЯреНрд╕ (рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ FlutterBackgroundView рдФрд░ iOS рдкрд░ FlutterEngine) рдмрдирд╛рддрд╛ рд╣реИред

| | рдЖрджрдореА рдХреЗ рд╕рдорд╛рди | рдЖрдИрдУрдПрд╕ | рд╡рд┐рд╡рд░рдг |
| :--------------- | :----------------: | :----------------------: | :-------------------------------- |
| FlutterIsolate.spawn(entryPoint,message) | :white_check_mark: | :white_check_mark: | рдПрдХ рдирдпрд╛ рд╕реНрдкрдВрджрди рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ |
| рд╕реНрдкрдВрджрди рдЖрдЗрд╕реЛрд▓реЗрдЯ.рдкреЙрдЬ () | :white_check_mark: | :white_check_mark: | рдЪрд▓ рд░рд╣реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ |
| рд╕реНрдкрдВрджрди рдЖрдЗрд╕реЛрд▓реЗрдЯред рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ () | :white_check_mark: | :white_check_mark: | рд░реБрдХреЗ рд╣реБрдП рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ |
| рд╕реНрдкрдВрджрди рдЖрдЗрд╕реЛрд▓реЗрдЯ.рдХрд┐рд▓ () | :white_check_mark: | :white_check_mark: | рдПрдХ рдЕрд▓рдЧ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ |

рдореИрдВ рд╕реАрдзрд╛ рдХрд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо "рдореВрд▓" Isolate рд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЗрд╕реЗ рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдЙрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред

(рдиреЛрдЯ: рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдмрддрд╛рдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ "рдЬрдЯрд┐рд▓" рднреА рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ред)

@nikitadol рдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ, flutter_isolate рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЬрди рдмрдирд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рди рдЪрд▓реЗред рдмреЗрд╢рдХ, рдкреНрд░рддрд┐ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдПрдХ рдирдпрд╛ рдЗрдВрдЬрди рдмрдирд╛рдирд╛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред рдЗрд╕реА рддрд░рд╣, рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдкреНрд▓рдЧрдЗрди рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рдкрд╛рдЗрдк рдХрд░рдиреЗ рдХрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЕрдбрд╝рдЪрди рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рднреА рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред

рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдореБрджреНрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд▓рдЧрдЗрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдЬреЛ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХрдИ рдЕрдиреНрдп рдЦреБрд▓реЗ рдореБрджреНрджреЗ рднреА рдПрдХ рдмрдбрд╝реЗ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрди рд╕рднреА рд╡рд┐рднрд┐рдиреНрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рддреМрд▓рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдзрд░-рдЙрдзрд░ рд╣реЛ рд╕рдХреЗрдВред

@ryanheise

Flutter_isolate рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЬрди рдмрдирд╛рддрд╛ рд╣реИ

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рднреА рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред

рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдРрд╕рд╛ рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреИрд╕реЗ?
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдкреВрдЫреЗ рдЧрдП рдкреНрд░рд╢реНрди рдорд╛рдиреНрдп рд╣реИрдВред
рдпрджрд┐ рд╕рдорд╛рдзрд╛рди рдПрдХ рдирдпрд╛ рдЗрдВрдЬрди рдмрдирд╛рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

(рдзреНрдпрд╛рди рджреЗрдВ, flutter_isolate рдореЗрд░рд╛ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред)

"рдмреЗрд╣рддрд░ рдХрд╛рдо" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓рдЯрд░рдЗрдВрдЬрд┐рди рдореЗрдВ рд╕рднреА рдорд╢реАрдирд░реА рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд▓рд╣рд╛рд▓, рдЖрд╡рд╢реНрдпрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдЗрдВрдЬрди рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП flutter_isolate рдХреЛ рдкреВрд░реЗ рдЗрдВрдЬрди рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

(рдзреНрдпрд╛рди рджреЗрдВ, flutter_isolate рдореЗрд░рд╛ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИред)

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ

рдХреЗрд╡рд▓ рдкреНрд▓рдЧрдЗрдиреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП flutter_isolate рдХреЛ рдкреВрд░реЗ рдЗрдВрдЬрди рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ 'is_background_view = true', рддреЛ рдЗрдВрдЬрди рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

рд╣реЗрдбрд▓реЗрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдПрдкреАрдЖрдИ рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб v1 рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб v2 рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдлрд╝реНрд▓рдЯрд░_рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рд╛рдорд╛рдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдФрд░ рдлрд╝реНрд▓рдЯрд░рдЗрдВрдЬрд┐рди рдХреЗ рдмреАрдЪ рдУрд╡рд░рд╣реЗрдб рдореЗрдВ рдЕрднреА рднреА рдЕрдВрддрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреЛ рдФрд░ рдХрдо рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХрд░ рдкрд╛рдПрдЧреАред рдпрд╣ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд╕рдордп рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдУрд╡рд░рд╣реЗрдб рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдореЗрдВ рднреА рдУрд╡рд░рд╣реЗрдб рд╣реИред

рддреЛ рдЖрдк рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдП рдЗрдВрдЬрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ?

рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛

рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдлрд╝реНрд▓рдЯрд░_рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╕реАрдорд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЯрд╛рд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ FlutterEngine рдХреЛ рддреБрд░рдВрдд рдЪрд╛рд▓реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рди рд╣реЛред

рдпрджрд┐ рдЗрдВрдЬрди 1 рд╣реИ рдФрд░ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ 1 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕ рдкреНрд░рд╢реНрди рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ:

https://github.com/flutter/flutter/issues/13937#issuecomment -667314232

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдирдП рд╣рд▓реНрдХреЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдореБрдЭрд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╣рд▓реНрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рджреЛ рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ:

  1. рдореЗрдердб рдЪреИрдирд▓реНрд╕ рдХреЛ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рддрд░рд╣ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдИ рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред рддреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдПрдХрд╛рдзрд┐рдХ рдЕрд▓рдЧрд╛рд╡ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдПрдХ рдмрд╛рд░ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рд╕рд╣реА рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред
  2. рдПрдХ рд╣реА FlutterEngine рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрдердХ рд▓реЗрдХрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЖрджрд┐ рдмрдирд╛рдПрдБ,

рдЕрдЧрд░ рддреБрдо рдореБрдЭрд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реЛ

рд╣рд╛рдБ, рдореИрдВ рдкреВрдЫрддрд╛ рд╣реВрдБ

рд╕рд╣реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рдЯреВ тАЛтАЛрд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ' рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ

рдПрдХ рд╣реА FlutterEngine рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрдердХ рд▓реЗрдХрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЖрджрд┐ рдмрдирд╛рдПрдБ,

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЗрдВрдЬрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм GeneratePluginRegistrant.
https://github.com/flutter/engine/blob/f7d241fd8a889fadf8ab3f9d57918be3d986b4be/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java#L330 -L344

рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдмреИрдХ рдмрдирд╛рдирд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рдЯреВ тАЛтАЛрд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ' рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ

рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред "рд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ" рдЙрд╕реА рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЗрдВрдЬрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреАред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрдВрддреНрд░ рдереЛрдбрд╝рд╛ рдкрд░рддрджрд╛рд░ рд╣реИред

рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред "рд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ" рдЙрд╕реА рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред

рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЦрд░рд╛рдм

рд╣рд╛рдВред

рдореБрдЭреЗ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЕрдкрдиреЗ рджреЛ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рджреЗрдВ... рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рджреЛ рд╡рд░реНрд╖реЛрдВ рддрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЬреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╕реАрдЦреА, рд╡рд╣ рдпрд╣ рдереА рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдПрдХ UI рдЯреВрд▓рдХрд┐рдЯ рд╣реИ ред рдЗрд╕ рдХрдерди рдореЗрдВ рдХреБрдЫ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдпрд╣ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдлрд╝реНрд▓рдЯрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ - рдЕрдЧрд░ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓реЗред

рд╕реНрдкрдВрджрди рдПрдХ рдпреВрдЖрдИ рдЯреВрд▓рдХрд┐рдЯ рд╣реИ, рдФрд░ рдпрд╣ рдЬреЛ рдЕрдЪреНрдЫрд╛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдпреВрдЖрдИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕реАрдкреАрдпреВ-рднрд╛рд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдорд╣рдВрдЧреА рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ UI рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмреЗрд╢рдХ, рдбрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╣рдо рд╕рд┐рд░реНрдл рдпреВрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рди рднреВрд▓реЗрдВред

рдореИрдВрдиреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реЗрдбрд▓реЗрд╕ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ - рдЬреЛ рдХреБрд▓ рдЖрдкрджрд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдмреЛрдЭ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рд╕реНрдкрдВрджрди рдЪрд╛рд▓рдХ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рдХреНрддрд┐, рдЖрдИрдПрдордПрдЪрдУ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ;
  • рдЕрдкрдиреЗ рддрд░реНрдХ рдХреЛ рдореВрд▓ рдордВрдЪ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ - рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдЯрд▓рд┐рди рдиреЗрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ UI рдХреЛ рдореЙрдбрд▓ рджреЗрдЦреЗрдВ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЗрдВрдЯ/рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ OLX рдиреЗ тАЛтАЛрдпрд╣реА рдХрд┐рдпрд╛: https://tech.olx.com/fast -рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк-рд╕рд╛рде-рд╕реНрдкрдВрджрди-рдХреЛрдЯрд▓рд┐рди-рджреЗрд╢реА-d7ce5cfeb5f1);
  • рд╕реНрдкрдВрджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдврд╛рдВрдЪреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ (рдЬрд╝рд╛рдорд░реАрди/рдмреНрд▓реЗрдЬрд╝рд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реА # рдбрд╛рд░реНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкрд░рд┐рд╖реНрдХреГрдд рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ)ред

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдореЗрдВ рдЙрдирдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдп/рдврд╛рдВрдЪреЗ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред

рдЕрдЧрд░ рдЖрдЗрд╕реЛрд▓реЗрдЯ_рд╣реИрдВрдбрд▓рд░ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрддрд╛я╝Я

@hasonguo рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ flutter_isolate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЬреЛрдбрд╝рдХрд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ (рдХрд┐рд╕реА рднреА рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ) рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд░рдд рдЬреЛрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рд╕рдордпред рдЗрд╕рдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп flutter_isolate рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдо рдордВрдбрд▓рд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рдВ, рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛрдиреЛрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ред рдЬреИрд╕рд╛ рдХрд┐ рд░рдпрд╛рди рдиреЗ рдмрддрд╛рдпрд╛, рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдХреЛ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рдПрдХ рдУрд╡рд░рд╣реЗрдб рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдареАрдХ рдпрд╣реА рдУрд╡рд░рд╣реЗрдб рд╣реИ рдЬрд┐рд╕рдиреЗ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХреЛ рдЗрд╕реЗ рдореВрд▓ Isolate рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрд╛ рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХрдИ (рдЕрдзрд┐рдХрд╛рдВрд╢?) рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдлрд┐рд░ рднреА, рдпрд╣ рдЙрддрдирд╛ рд╕рд╛рдл рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдЗрд╕реЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдлрд╝реНрд▓рдЯрд░ рдЯреАрдо рдХрд┐рд╕реА рднреА рдмреБрдирд┐рдпрд╛рджреА Isolate рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд┐рдирд╛ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреА, рддреЛ рдкреВрд░реА рдЪрд░реНрдЪрд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рд╡рд┐рдкрд░реАрдд рднреА рд╕рдЪ рд╣реИ: рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЕрдиреБрд╕рд░рдг рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдкреИрдХреЗрдЬ рдпрд╛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ, рддреЛ рд╕рдордп рдХреНрдпреЛрдВ рд╡реНрдпрддреАрдд рдХрд░реЗрдВ рдФрд░ рдХреЛрд░ рдореЗрдВ рд╡рдЬрди рдЬреЛрдбрд╝реЗрдВ?

рдПрдХ рд╣реА FlutterEngine рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрдердХ рд▓реЗрдХрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЖрджрд┐ рдмрдирд╛рдПрдБ,

рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЗрдВрдЬрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм GeneratePluginRegistrant.
https://github.com/flutter/engine/blob/f7d241fd8a889fadf8ab3f9d57918be3d986b4be/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java#L330 -L344

рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдмреИрдХ рдмрдирд╛рдирд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдПрдХ рдФрд░ рд╕реБрдзрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдирдП рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЖрд▓рд╕реА рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЖрдо рддреМрд░ рдкрд░, рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ GeneratedPluginRegistrant рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд░реВрдЯреАрди рдХрд┐рддрдирд╛ рдХреБрд╢рд▓ рд╣реИ, рдпрд╣ рдХреБрдЫ рдУрд╡рд░рд╣реЗрдбреНрд╕ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╣ рдПрдХ рдФрд░ рдХрд╣рд╛рдиреА рд╣реИред рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреИрдирд▓ рдкреНрд▓рдЧ рдЗрди рдХреЗ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рд╕реА рдЪреИрдирд▓ рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд▓рдЧ рдЗрди рдХреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рд╛рдЗрдб рдХреЛ рдЗрдВрд╕реНрдЯреЗрдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдпрд╛ рддреЛ рд╡рд┐рдзрд┐ рдЪреИрдирд▓реЛрдВ рдХреЛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрдВрддреНрд░ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдбрд╛рд░реНрдЯ рдкрдХреНрд╖ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд▓рд╕реА рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рддрдВрддреНрд░ рддрддреНрдХрд╛рд▓рддрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рдордВрдЪ рдкрдХреНрд╖ рдХреЗ рдЕрд▓рдЧ рдХреЗ рднреАрддрд░ред

@рддрд╛рд╣рд╛рдЯреЗрд╕рд░

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ

E/flutter ( 7814): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Invalid argument(s): Isolate.spawn expects to be passed a static or top-level function

рдирдорд╕реНрддреЗ @nikitadol
рдзрдиреНрдпрд╡рд╛рдж, рдЕрджреНрдпрддрди рдЙрджрд╛рд╣рд░рдг, рдпрд╣ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? (рдореБрдЭреЗ рдкрд╣рд▓реЗ рдХрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА)
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдПрдХ рдкреВрд░реНрдг рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдиреНрдпреВрдирддрдо рдХреЛрдб рдирдореВрдирд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж

@рддрд╛рд╣рд╛рдЯреЗрд╕рд░


рдХреЛрдб рдирдореВрдирд╛

import 'package:battery/battery.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';

Future<void> main() async {
  await printBatteryLevel();
  await compute(printBatteryLevel, null);
}

Future<void> printBatteryLevel([dynamic message]) async {
  WidgetsFlutterBinding.ensureInitialized();
  print(await Battery().batteryLevel);
}



рд▓реЙрдЧ

Launching lib/main.dart on Pixel 4 in debug mode...
Running Gradle task 'assembleDebug'...
тЬУ Built build/app/outputs/flutter-apk/app-debug.apk.
Installing build/app/outputs/flutter-apk/app.apk...
Waiting for Pixel 4 to report its views...
Debug service listening on ws://127.0.0.1:50709/-SPs_6AmL2Q=/ws
Syncing files to device Pixel 4...
I/flutter ( 8708): 39
E/flutter ( 8708): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: Exception: UI actions are only available on root isolate.
E/flutter ( 8708): #0      Window._nativeSetNeedsReportTimings (dart:ui/window.dart:1003:86)
E/flutter ( 8708): #1      Window.onReportTimings= (dart:ui/window.dart:996:29)
E/flutter ( 8708): #2      SchedulerBinding.addTimingsCallback (package:flutter/src/scheduler/binding.dart:272:14)
E/flutter ( 8708): #3      SchedulerBinding.initInstances (package:flutter/src/scheduler/binding.dart:209:7)
E/flutter ( 8708): #4      ServicesBinding.initInstances (package:flutter/src/services/binding.dart:27:11)
E/flutter ( 8708): #5      PaintingBinding.initInstances (package:flutter/src/painting/binding.dart:23:11)
E/flutter ( 8708): #6      SemanticsBinding.initInstances (package:flutter/src/semantics/binding.dart:24:11)
E/flutter ( 8708): #7      RendererBinding.initInstances (package:flutter/src/rendering/binding.dart:32:11)
E/flutter ( 8708): #8      WidgetsBinding.initInstances (package:flutter/src/widgets/binding.dart:257:11)
E/flutter ( 8708): #9      new BindingBase (package:flutter/src/foundation/binding.dart:59:5)
E/flutter ( 8708): #10     new _WidgetsFlutterBinding&BindingBase&GestureBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #11     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #12     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #13     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #14     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #15     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #16     new _WidgetsFlutterBinding&BindingBase&GestureBinding&SchedulerBinding&ServicesBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #17     new WidgetsFlutterBinding (package:flutter/src/widgets/binding.dart)
E/flutter ( 8708): #18     WidgetsFlutterBinding.ensureInitialized (package:flutter/src/widgets/binding.dart:1229:7)
E/flutter ( 8708): #19     printBatteryLevel (package:bug/main.dart:11:25)
E/flutter ( 8708): #20     _IsolateConfiguration.apply (package:flutter/src/foundation/_isolates_io.dart:83:34)
E/flutter ( 8708): #21     _spawn.<anonymous closure> (package:flutter/src/foundation/_isolates_io.dart:90:65)
E/flutter ( 8708): #22     Timeline.timeSync (dart:developer/timeline.dart:163:22)
E/flutter ( 8708): #23     _spawn (package:flutter/src/foundation/_isolates_io.dart:87:35)
E/flutter ( 8708): #24     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:304:17)
E/flutter ( 8708): #25     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
E/flutter ( 8708): 



рд╕реНрдкрдВрджрди рдЪрд┐рдХрд┐рддреНрд╕рдХ -v

[тЬУ] Flutter (Channel stable, 1.20.4, on Mac OS X 10.15.6 19G2021, locale en-BY)
    тАв Flutter version 1.20.4 at /Users/nikitadold/development/flutter
    тАв Framework revision fba99f6cf9 (2 weeks ago), 2020-09-14 15:32:52 -0700
    тАв Engine revision d1bc06f032
    тАв Dart version 2.9.2

[тЬУ] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    тАв Android SDK at /Users/nikitadold/Library/Android/sdk
    тАв Platform android-30, build-tools 30.0.0
    тАв Java binary at: /Users/nikitadold/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    тАв Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    тАв All Android licenses accepted.

[тЬУ] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    тАв Xcode at /Applications/Xcode.app/Contents/Developer
    тАв Xcode 12.0.1, Build version 12A7300
    тАв CocoaPods version 1.9.3

[!] Android Studio (version 4.0)
    тАв Android Studio at /Users/nikitadold/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/Android Studio.app/Contents
    тЬЧ Flutter plugin not installed; this adds Flutter specific functionality.
    тЬЧ Dart plugin not installed; this adds Dart specific functionality.
    тАв Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[тЬУ] IntelliJ IDEA Ultimate Edition (version 2020.2.2)
    тАв IntelliJ at /Users/nikitadold/Applications/JetBrains Toolbox/IntelliJ IDEA Ultimate.app
    тАв Flutter plugin installed
    тАв Dart plugin version 202.7319.5

@рддрд╛рд╣рд╛рдЯреЗрд╕рд░
рдХреГрдкрдпрд╛ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ

рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрджреЗрд╢ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред [...]

рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ _expected_ рд╣реИ рдФрд░ severe: new feature . рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╣реИ
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ _рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз_ рдпрд╛ _ рдкреНрд░рд╕реНрддрд╛рд╡_ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ _рдмрдЧ_ рдХреЗ рд░реВрдк рдореЗрдВ

@iapicca

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ

E/flutter (23174): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function '<anonymous closure>':.)

@iapicca

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рддреНрд░реБрдЯрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ

E/flutter (23174): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: Invalid argument(s): Illegal argument in isolate message : (object is a closure - Function '<anonymous closure>':.)

рдЖрдк рд╕рд╣реА рд╣реИрдВ рдореЗрд░рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

collinjackson picture collinjackson  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

eseidelGoogle picture eseidelGoogle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Hixie picture Hixie  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sethladd picture sethladd  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

najeira picture najeira  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ