рдЬрдм рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╕реНрдкреЙрдиреНрдб рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдРрдк рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдИрдУрдПрд╕ рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб рджреЛрдиреЛрдВ рдкрд░)ред рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдХрд╣реАрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдордЬрдмреВрдд рд╕реАрдорд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХреНрдпрд╛ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкреНрд▓рдЧ рдЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?
cc @mravn-google for triage
рд╕реЗрдХреЗрдВрдбрд░реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЗрдВрдЬрди рдХреЛрдб рдбрд┐рд░реЗрдлрд░реЗрдВрд╕ рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдареАрдХ-рдареАрдХ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИ; рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рдзрд┐ рдХрд╛ рдкрддреНрдерд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдРрд╕реА рдЪреАрдЬ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред
рдПрдХ (рдЕрдирд╛рдбрд╝реА) рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкреНрд░рд╛рдердорд┐рдХ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддрд╛ рд╣реИред
@sroddy рдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдорд╛рдзреНрдпрдорд┐рдХ рдЕрд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдЖрдо рддреМрд░ рдкрд░ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрддрдГ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реНрдкрдВрджрдирдлрд╛рдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ); рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ imho рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрддреНрдерд░ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдлрд┐рд▓рд╣рд╛рд▓ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдЬрд░ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЙрдк-рд░реВрдкреА рд╣реЛрдЧрд╛ .
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдереЛрдбрд╝рд╛ рдлрдВрд╕ рдЧрдпрд╛: рдХреНрдпрд╛ рдЖрдк рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реЗ рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдзрдиреНрдпрд╡рд╛рдж
@sroddy рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ рд╕реНрдерд┐рд░ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдпрд╣ рд╕реАрдзреЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рд╡рд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЦреБрдж рдЗрд╕рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИред
рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣рд╛рдВ рдПрдХ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдЬреЛ рддрдм рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╕рдВрдЪрд╛рд░ рдПрдХ рдкреНрд▓рдЧрдЗрди рдпрд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдХ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЪреИрдирд▓ рдирд╛рдореЛрдВ рдХрд╛ рдПрдХ рдЬреНрдЮрд╛рдд рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреНрд╡рд┐рддреАрдпрдХ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рди рдХрд┐ рдореБрдЦреНрдп рд╕реЗ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрди рдЪреИрдирд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдВрджреЗрд╢ рдХреЛ рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЕрдкрдиреЗ рджреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдХреЗ рдмреАрдЪ рдмрд╛рдЗрдирд░реА рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдЙрддреНрддрд░реЛрдВ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрдЧреНрд░реЗрд╖рдг рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВред рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХрднреА рднреА рдЕрдВрддрд░ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред
рд╕рдорд╛рдзрд╛рди рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдореБрдЦреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ M1 рдФрд░ R1 рдкреЛрд░реНрдЯ рдФрд░ рдЕрдкрдиреЗ рд╕реЗрдХреЗрдВрдбрд░реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдкрд░ M2, R2 рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдПрдо, рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЖрд░ред
BinaryMessages.setMockMessageHandler
рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ M1 рдкрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВ (рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЙрд╕ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдЙрд╕ рдЪреИрдирд▓ рдХреЗ рд╕рд╛рде BinaryMessage.send рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред рдЙрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдФрд░ R2 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рд╣реА рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред M2 рдХреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдЬреЛ BinaryMessages.handlePlatformMessage
рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред R1 рдХреЗ рдЙрддреНрддрд░реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╣рд╛рдВ рдЙрддреНрддрд░ рдХреЙрд▓рдмреИрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВред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
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдореИрдВ рдпрд╣рд╛рдБ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ:
рдХрдИ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЙрд▓ рдбрд╛рд░реНрдЯ рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ; рд╕рдВрдмрдВрдзрд┐рдд рд░реВрдк рд╕реЗ, рдХреБрдЫ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рд▓реЛрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрд╕ рдмреАрдЬреА рдЬрд┐рдпреЛрдлреЗрдВрд╕рд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдкрд░ рдХреИрд╕реЗ рд╡рд╛рдкрд╕ рдЖрдПрдВ ...
рдпрджрд┐ рд╡реЗ рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╡рд╣ рдкреНрд▓рдЧрдЗрди рдХреЛрдб "рдЬрдВрдХ" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдереНрд░реЗрдб рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ "рдпреВрдЖрдИ рдереНрд░реЗрдб" рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛; рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЗ рджреМрд░рд╛рди рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрдиреНрдп рд╕рднреА рд╕рдВрджреЗрд╢ рдЪреИрдирд▓реЛрдВ рдХреЛ рднреА рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрдЧрд╛ред
рдлрд┐рд░ рдЖрдк рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦрдХ рдХреА рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХреА рджрдпрд╛ рдкрд░ рд╣реИрдВ; рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╡реЗ рдЕрдкрдиреЗ рднрд╛рд░реА рдХрд╛рдо рдХреЛ рдореВрд▓ рдХреЛрдб рдореЗрдВ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдЖрдк рдХреЛрдб рдЪрд▓рд╛ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╡рд┐рдзрд┐ рдЪреИрдирд▓реЛрдВ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ; рдЙрди рд╕рдВрджреЗрд╢ рдЪреИрдирд▓реЛрдВ рдХреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдб рдкрд░ рдЪрд▓рд╛рдирд╛ рд╣реИред
рдЬрдмрдХрд┐ рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдЪрд┐рдиреНрдордпрдЧрд╛рд░реНрдб рдпрд╣рд╛рдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ , рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдиреЗ рдкреНрд▓рдЧрдЗрди рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдЦреЛрд▓рд╛; рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╛рдпрд░рдмреЗрд╕ рдПрдордПрд▓ рдкреНрд▓рдЧрдЗрди рднреА рдЗрд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХрдбрд╝реА рдЪреЗрддрд╛рд╡рдиреА рджреА рдЧрдИ рд╣реЛ рдЬреЛ рднрд╛рд░реА рдЙрдард╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рджреА рдЬрд╛рддреА; рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрджрд╛рд╣рд░рдг рдРрдк рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдСрди-рд╕реНрдХреНрд░реАрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕рдВрджреЗрд╢ рдЪреИрдирд▓ рдХреЙрд▓ рдХреЛ рд╡рд╛рдкрд╕ рдЖрдиреЗ рдореЗрдВ ~ 20 рдПрдордПрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдЪреЗрд╣рд░реЗ рдкрд░; рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЬреЛ рдХреБрдЫ рднреА рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдбреАрдмреА рдХреЙрд▓ рдФрд░ рд╕реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддрд╛ рд╣реИред рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдзрд╛рдЧрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдУрд╣, рдХреЛрдИ рдореБрдлреНрдд рд▓рдВрдЪ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрдХреНрдХрд╛ рд╣реИ...
рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рднрд╛рд░реА рдХрд╛рд░реНрдпрднрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред рдХреЛрдИ рдЙрдкрд╛рдп рдирд╣реАрдВ рдорд┐рд▓рд╛ред
@AndruByrne рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рд╕реЗ рдЕрдирдЬрд╛рди рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореЗрд░реА рдкреНрд▓рдЧрдЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдпреВрдЖрдИ рдХреЛ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред
+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ - рд╕реНрдкрдВрджрди рдкреНрд░рд╛рдЗрдордЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдЕрднреА рддрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореА рд╣реИред рд╕рднреА рдлрд╝реНрд▓рдЯрд░ рдРрдкреНрд╕ рд╕рд╛рдзрд╛рд░рдг async/рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕реЗ рджреВрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХреЗ рд▓рд┐рдП рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡реНрдпрд░реНрде рдФрд░ рдмреЗрдорд╛рдиреА рдмрдирд╛рддреЗ рд╣реИрдВред Xamarin рдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рджрд┐рди рд╕реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдмрдирд╛рдпрд╛ рдерд╛ - рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдЕрдм рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
+1
рдореБрдЭреЗ рдПрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЪреИрдирд▓ рд╡рд┐рдзрд┐ рдХреЛ рджреВрд╕рд░реЗ рдЖрдЗрд╕реЛрд▓реЗрдЯ рд╕реЗ рднреА рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
+1
+1
+1
+1 рдпрд╣ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
+1
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рджреЗрд╢реА рдПрд╕рдбреАрдХреЗ рд╣реИ рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред BackgroundFlutterMethodChannel
рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреАред
+1
+1
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рдХрд┐ _рдХреНрд░реИрд╢ рдмреБрд░реА рддрд░рд╣ рд╕реЗ_ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдПрдХ рдкреНрд░реВрдл-рдСрдл-рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдПрдХ рджреЗрд╢реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рднреЗрдЬрддреЗ рд╕рдордп рд╡реЙрдЪрдбреЙрдЧ рдЯрд╛рдЗрдордЖрдЙрдЯ (0x8badf00d) рдФрд░ рдЕрдиреНрдп рдЕрдЬреАрдм рддреНрд░реБрдЯрд┐рдпреЛрдВ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реВрдВред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рддрд░реАрдХреЛрдВ [рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ] рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рдзрд╛рдЧреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдЯреАрдХ рдореБрджреНрджреЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рд╣реВрдВред
+1
+1
+1
+1
+1 рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
+1 рдХреЛ рдЗрд╕рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХрдо рд╕реЗ рдХрдо p2 рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
рдордВрдЪ рдЪреИрдирд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡реЗ рд╣реИрдВ
рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рдЕрд╡рд░реЛрдзрдХ рд╣реИред
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);
}
рдзрд╛рд░рд╛
// рд╣рдо рдпрд╣рд╛рдВ рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рдЯрд╛рд╕реНрдХ рдХреЗ рдмрдЬрд╛рдп)
// рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдкрд░рдд рд╢реЗрдбреНрдпреВрд▓рд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдЕрдиреБрд╕реВрдЪрдХ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ
// рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрдкрдиреЗ рдЬреАрд╡рдирдЪрдХреНрд░ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ)ред рдЯрд╛рдЗрдорд░
// рд╡реИрд╕реЗ рднреА рд╢реЗрдбреНрдпреВрд▓ рдЯрд╛рд╕реНрдХ рд╣реБрдб рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдлрд░реНрдХ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ
// рдХрд┐ рдпреЗ рд╕рд┐рд░реНрдл рдЖрдЧреЗ рдЪрд▓реЗрдВрдЧреЗ, рдмрдЬрд╛рдп рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ
// рдЕрдиреНрдп рдХрд╛рд░реНрдп рдЬреЛ рдЪрд▓ рд░рд╣реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ _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.рднрд╡рд┐рд╖реНрдп рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
рдЙрдкрдЬ* рд╕реНрдЯреНрд░реАрдо
}
// рдпрд╣ рдКрдкрд░ _addLicenses рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдЗрд╕реЛрд▓реЗрдЯ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдерд┐рд░ рд╕реВрдЪреА
рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ _licenseSeparator = '\n' + ('-' * 80) + '\n';
рдЕрдВрддрд┐рдо рд╕реВрдЪреА
рдЕрдВрддрд┐рдо рд╕реВрдЪреА
рдХреЗ рд▓рд┐рдП (рд▓рд╛рдЗрд╕реЗрдВрд╕ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рд╛рдЗрд╕реЗрдВрд╕) {
рдЕрдВрддрд┐рдо рдЕрдВрддрд░ рд╡рд┐рднрд╛рдЬрди = рд▓рд╛рдЗрд╕реЗрдВрд╕ред рдЗрдВрдбреЗрдХреНрд╕рдСрдл ('\ 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._();
// рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ред
// рдпрд╣ рд╕реНрдерд┐рд░ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХреЗред
рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рдирдХреНрд╢рд╛
// рдореЙрдХ рд╣реИрдВрдбрд▓рд░ рдЬреЛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред
// рдпрд╣ рд╕реНрдерд┐рд░ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХреЗред
рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рдирдХреНрд╢рд╛
рднрд╡рд┐рд╖реНрдп
рдЕрдВрддрд┐рдо рдкреВрд░реНрдгрдХрд░реНрддрд╛
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
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдирдП рд╣рд▓реНрдХреЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдореБрдЭрд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╣рд▓реНрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рджреЛ рд░реВрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ:
рдЕрдЧрд░ рддреБрдо рдореБрдЭрд╕реЗ рдкреВрдЫ рд░рд╣реЗ рд╣реЛ
рд╣рд╛рдБ, рдореИрдВ рдкреВрдЫрддрд╛ рд╣реВрдБ
рд╕рд╣реА рдЖрдЗрд╕реЛрд▓реЗрдЯ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рдЯреВ тАЛтАЛрд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ' рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ
рдПрдХ рд╣реА FlutterEngine рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреГрдердХ рд▓реЗрдХрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдЖрджрд┐ рдмрдирд╛рдПрдБ,
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЗрдВрдЬрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм GeneratePluginRegistrant.
https://github.com/flutter/engine/blob/f7d241fd8a889fadf8ab3f9d57918be3d986b4be/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java#L330 -L344
рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдмреИрдХ рдмрдирд╛рдирд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ 'рдЯреВ тАЛтАЛрд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ' рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ
рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред "рд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ" рдЙрд╕реА рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЗрдВрдЬрди рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рдЖрдк рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реЛрдЧреАред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддрдВрддреНрд░ рдереЛрдбрд╝рд╛ рдкрд░рддрджрд╛рд░ рд╣реИред
рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред "рд░рд╛рдЗрдЯ рдЖрдЗрд╕реЛрд▓реЗрдЯ" рдЙрд╕реА рддрд░рд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬреИрд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓рдЧрдЗрди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдЗрд╕реЛрд▓реЗрдЯреНрд╕ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЦрд░рд╛рдм
рд╣рд╛рдВред
рдореБрдЭреЗ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдЕрдкрдиреЗ рджреЛ рд╕реЗрдВрдЯ рдЬреЛрдбрд╝рдиреЗ рджреЗрдВ... рдлрд╝реНрд▓рдЯрд░ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рджреЛ рд╡рд░реНрд╖реЛрдВ рддрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЬреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╕реАрдЦреА, рд╡рд╣ рдпрд╣ рдереА рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдПрдХ UI рдЯреВрд▓рдХрд┐рдЯ рд╣реИ ред рдЗрд╕ рдХрдерди рдореЗрдВ рдХреБрдЫ рднреА рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдпрд╣ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдлрд╝реНрд▓рдЯрд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ - рдЕрдЧрд░ рд▓реЛрдЧ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓реЗред
рд╕реНрдкрдВрджрди рдПрдХ рдпреВрдЖрдИ рдЯреВрд▓рдХрд┐рдЯ рд╣реИ, рдФрд░ рдпрд╣ рдЬреЛ рдЕрдЪреНрдЫрд╛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдпреВрдЖрдИред рдпрджрд┐ рдЖрдк рдПрдХ рд╕реАрдкреАрдпреВ-рднрд╛рд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдорд╣рдВрдЧреА рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЬрдЯрд┐рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИ рдЯреВрд▓рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ UI рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдмреЗрд╢рдХ, рдбрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рд╣рдо рд╕рд┐рд░реНрдл рдпреВрдЖрдИ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдЗрд╕ рдЯреВрд▓рдХрд┐рдЯ рдХреЗ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рди рднреВрд▓реЗрдВред
рдореИрдВрдиреЗ рдХрдИ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реЗрдбрд▓реЗрд╕ рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ - рдЬреЛ рдХреБрд▓ рдЖрдкрджрд╛ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╣рдореЗрдВ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬреЛ рд░рдЦрд░рдЦрд╛рд╡ рдмреЛрдЭ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рд╕реНрдкрдВрджрди рдЪрд╛рд▓рдХ рдЗрд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рдПрдЧрд╛ред
рдпрджрд┐ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╢рдХреНрддрд┐, рдЖрдИрдПрдордПрдЪрдУ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдореЗрдВ рдЙрдирдХреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдп/рдврд╛рдВрдЪреЗ рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреИрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд╣ рднреА рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИред
рдЕрдЧрд░ рдЖрдЗрд╕реЛрд▓реЗрдЯ_рд╣реИрдВрдбрд▓рд░ рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛрддрд╛я╝Я
@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>':.)
рдЖрдк рд╕рд╣реА рд╣реИрдВ рдореЗрд░рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдЖрдо рддреМрд░ рдкрд░ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрддрдГ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдирдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рд╕реНрдкрдВрджрдирдлрд╛рдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ); рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ imho рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкрддреНрдерд░ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрдЬрд╛рдп рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред
рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдлрд┐рд▓рд╣рд╛рд▓ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдзрд┐ рдЪреИрдирд▓ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдПрдХ рдЕрд▓рдЧ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреБрдЬрд░ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЙрдк-рд░реВрдкреА рд╣реЛрдЧрд╛ .
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреМрд░рд╛рди рдереЛрдбрд╝рд╛ рдлрдВрд╕ рдЧрдпрд╛: рдХреНрдпрд╛ рдЖрдк рдПрдХ рдорд╛рдзреНрдпрдорд┐рдХ рд╕реЗ рдореБрдЦреНрдп рдЕрд▓рдЧрд╛рд╡ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдзрдиреНрдпрд╡рд╛рдж