рд╕реНрдкрдВрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдореВрд▓ рдмрд╛рддреЗрдВ

рд╕реНрдкрдВрджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдореВрд▓ рдмрд╛рддреЗрдВ


Yura Luchaninov рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП Flutter рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕рд▓рд┐рдП рд░рд╕реЛрдИ рдореЗрдВ рдкреБрд░реБрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдерд╛ред рдмрд╛рддреЗрдВ рд╣реЛ рдЧрдИ рд╣реИрдВред рдореИрдВрдиреЗ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдлрд┐рд░ рдкрдврд╝рд╛, рдлрд┐рд░ рд▓рд┐рдЦрд╛ред рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЬреЛ рд╡реЗ рд╕рдордЭрд╛рддреЗ рд╣реИрдВ рд╡рд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ "рд▓реЗрдХрд┐рди" рдХреЗ рдирд╣реАрдВ - рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ рд╕рдордЭрд╛рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдкреАрдПрд▓, рдПрдкреНрд░реЛрдЪ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдирдпрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╖реНрдЯрдкреНрд░рдж, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк "рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ", рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ Google рдХреЛ рдХреНрдпрд╛ рдкрддрд╛: рдбрд╛рд░реНрдЯ / рдлрд╝реНрд▓рдЯрд░ / рд╡рд┐рдВрдбреЛ / рд╕реНрдХреНрд░реАрди / рд░реВрдЯ / рд╡рд┐рдЬреЗрдЯ?


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


рдЧрд╛рдЗрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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


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


рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рддрд╛рдХрд┐ рджреЗрд░реА рди рд╣реЛред рдФрд░ рд╕рдмрд╕реЗ рдЙрддреНрд╕реБрдХ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред


рдордВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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


  • рдЖрдЬ рдХреЗ рдХрдИ рдкреНрд░рд╕рд┐рджреНрдз рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдлрд╝реНрд▓рдЯрд░ рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред рд╕реНрдкрдВрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ, рдбрд╛рд░реНрдЯ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА, рд╕реНрд╡рд┐рдлреНрдЯ, рдЬрд╛рд╡рд╛, рдпрд╛ рдХреЛрдЯрд▓рд┐рди рдХреЗ рдмрд░рд╛рдмрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
  • рд╕реНрдкрдВрджрди рджреЗрд╢реА рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рдлрд┐рд░ рд╕реЗ, рдХрд┐рд╕реА рднреА рд░реВрдк рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкрд░рдд рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЧреЗрдо рдЗрдВрдЬрди рдХреА рддрд░рд╣ (рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЧреЗрдо рдореЗрдВ рдмрд╣реБрдд рдЧрддрд┐рд╢реАрд▓ UI рд╣реИ), рдпрд╣ рдкреВрд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдЦреАрдВрдЪрддрд╛ рд╣реИред рдмрдЯрди, рдкрд╛рда, рдореАрдбрд┐рдпрд╛ рддрддреНрд╡, рдкреГрд╖реНрдарднреВрдорд┐ - рдпрд╣ рд╕рдм рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдЗрдВрдЬрди рдХреЗ рдЕрдВрджрд░ рдЦреАрдВрдЪрд╛ рдЧрдпрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЗ рдмрд╛рдж, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдлрд╝реНрд▓рдЯрд░ рдкрд░ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБрдд рдХрдо рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИ: iOS and 2.5Mb рдФрд░ Android M 4Mbред
  • рдпреВрдЖрдИ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрди, рд╡рд┐рдЬреЗрдЯреНрд╕ (рд╡реЗрдм тАЛтАЛрдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдШрдЯрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ ReactJS рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдЧрддрд┐ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЬрдм рдЙрдирдореЗрдВ рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ рд╣реЛ (рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдбреЛрдо рд╡реЗрдм рдХреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ)ред
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЙрдЯ-рд░реАрд▓реЛрдб рд╣реИ , рдЬреЛ рд╡реЗрдм рд╕реЗ рдЗрддрдирд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рдФрд░ рдЕрднреА рднреА рджреЗрд╢реА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

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


рдбрд╛рд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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


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


рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдпрд╣ рд╡рд┐рд╖рдп, рдбрд╛рд░реНрдЯ рдХреА рддрд░рд╣, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдпрд╣рд╛рдБ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ред


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


OSX рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддред рдЖрдИрдУрдПрд╕ рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдлреЛрди рдХреЗ рдкреЗрдВрдЯ рдХрд┐рдП рдЧрдП рдлреНрд░реЗрдо рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдЖрдИрдлреЛрди 8 рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рджрд┐рдпрд╛ (рдпрд╣ "рд▓рдВрдмрд╛" рдирд╣реАрдВ рд╣реИ):


  • Hardware тЖТ Device тЖТ iOS # тЖТ iPhone 8
  • Window тЖТ Show Device Bezels

рдЖрдк рдмрдЯрди рдХреЗ рдмрд┐рдирд╛ рд░рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣реЙрдЯрдХреАрдЬрд╝ рд╣реИрдВ: Shift + Cmd + H - рдпрд╣ рдШрд░ рд╣реИ, Cmd + Right - рдФрд░ рдпрд╣ рдлреЛрди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдмрд╛рдХреА Hardware рдореЗрдиреВ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдСрди-рд╕реНрдХреНрд░реАрди рдХреАрдмреЛрд░реНрдб рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬрдм рдХреАрдмреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛ рдЖрдзреА рд╕реНрдХреНрд░реАрди рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: Cmd + K (рдЬрдм рдХреБрдЫ рдЗрдирдкреБрдЯ рдХреНрд╖реЗрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред


рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде iPhone 8 рдФрд░ iPhone X
рдлреНрд░реЗрдо рдХреЗ рд╕рд╛рде iPhone 8 рдФрд░ iPhone X


iPhone 8 рдФрд░ iPhone X рдмреЙрд░реНрдбрд░рд▓реЗрд╕
iPhone 8 рдФрд░ iPhone X рдмреЙрд░реНрдбрд░рдЧреЗрдореНрд╕


рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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


  • lib/ - рдкрдм (рдбрд╛рд░реНрдЯреНрд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░) рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕рднреА рдХреЛрдб рдЗрд╕ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВ;
  • pubspec.yml - рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ package.json , рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдорд╛рдирдХ рдбрд╛рд░реНрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрдВрджрди рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ: flutter pub get <package_name> ;
  • test/ - рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИ? рдЖрдк рдЙрдиреНрд╣реЗрдВ flutter test рдХрд╣рдХрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ;
  • ios/ & android/ - рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░реНрд╕, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдЕрдзрд┐рдХрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ (рд╕реНрдерд╛рди, рдмреНрд▓реВрдЯреВрде рддрдХ рдкрд╣реБрдВрдЪ), рдЖрдЗрдХрди рдФрд░ рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред

рд╣рдордиреЗ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рдЙрд╕ lib/ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдЬрд╣рд╛рдВ main.dart рдлрд╝рд╛рдЗрд▓ рд╣рдорд╛рд░реА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╣реА рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ main() рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕реА (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреВрд╕рд░реЛрдВ рдХреЗ рдЯрди) рдХреА рддрд░рд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред


рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдпрд╣рд╛рдБ)


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


Main.dart рд╕реЗ рд╕рдм рдХреБрдЫ рдирд┐рдХрд╛рд▓реЗрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рдХрд░ рдЯрд┐рдкреНрдкрдгреА рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ:


 import 'package:flutter/widgets.dart'; //     //  Dart      main() main() => runApp( //   runApp  Flutter Text( //  ,   ,   <span> 'Hello, World!!!', //   тАФ     textDirection: TextDirection.ltr, //       ), ); 

runApp(тАж) рдПрдХ рдПрдХрд▓ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ - рдПрдХ рд╡рд┐рдЬреЗрдЯ рдЬреЛ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рд╣реЛрдЧрд╛ред рд╡реИрд╕реЗ, рд╣реЙрдЯ-рд░реАрд▓реЛрдб рдЗрд╕реЗ рдирд╣реАрдВ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
Text(тАж) - рд╕реНрдкрдВрджрди рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Text рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред textDirection ред рдФрд░ рдпрд╣ text-align рд╕рдВрд░реЗрдЦрдг рдХреА рддрд░рд╣ рдкрд╛рда рд╕рдВрд░реЗрдЦрдг рдирд╣реАрдВ рд╣реИ, рдЬрдм рд╡реЗрдм рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдпрд╣ direction рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред Text рддрдм рддрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдЙрд╕реЗ рджрд┐рд╢рд╛ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓ рдЬрд╛рддрд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рд░ рдЬрдЧрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ - рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдкрд╛рда рдХреА рджрд┐рд╢рд╛ рдХреЛ рдкреВрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред


рдкрд╣рд▓реЗ рд╕реЗ рдРрдк рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рд╣реИ? "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рдЪреА! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ ... рд╣рд╛рдБ? рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ред


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░ рд░рд╣рд╛ рд╣реИ


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


 import 'package:flutter/widgets.dart'; main() => runApp( Center( // ,      child: Text( 'Hello, World!', textDirection: TextDirection.ltr, ), ), ); 

Center(тАж) рдПрдХ рд╡рд┐рдЬреЗрдЯ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХреЗрдВрджреНрд░ рдореЗрдВ рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ child рддрд░реНрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдПрдХ рдФрд░ рд╡рд┐рдЬреЗрдЯ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдк рдЕрдХреНрд╕рд░ рд╕реНрдкрдВрджрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ child рдФрд░ children рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рд╡рд┐рдЬреЗрдЯреНрд╕ рдЗрди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдмреБрд▓рд╛рдпрд╛ рд╡рд┐рдЬреЗрдЯ рдХреЗ рдЕрдВрджрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред


UI рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ, рд▓реБрдХ рдмрджрд▓рдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рд╡рд┐рдЬреЗрдЯ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Directionality(тАж) рд╡рд┐рдЬреЗрдЯ Directionality(тАж) рд╕рднреА рдмрд╛рд▓ рд╡рд┐рдЬреЗрдЯ рдХреЗ рд▓рд┐рдП рдкрд╛рда рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:


 import 'package:flutter/widgets.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Center( child: Text('Hello, World!'), ), ), ); 

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


 import 'package:flutter/widgets.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Container( //  ! <div>   Flutter' //   Container  color    color: Color(0xFF444444), child: Center( child: Text( 'Hello, World!', style: TextStyle( //     ,    color: Color(0xFFFD620A), //     fontSize: 32.0, //    ), ), ), ), ), ); 

рд╣реЗрд▓реЛрд╡рд░реНрд▓реНрдб рдереНрдпреЛрд░реА


Color(тАж) - рд░рдВрдЧред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдХреНрд╖рд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдПрдХ рдирдВрдмрд░ рд╕реЗ рдЧреБрдЬрд╛рд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ HEX рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдордиреЗ рджреЛ рдФрд░ рд╡рд░реНрдг рдЬреЛрдбрд╝реЗ, рдЬреЛ рд░рдВрдЧ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ 0x00 рдмрд┐рд▓реНрдХреБрд▓ рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ, рдФрд░ 0xFF рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкрд╛рд░рджрд░реНрд╢реА рдирд╣реАрдВ рд╣реИред


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


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


рдкреНрд░реЛ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╡рд┐рдЬреЗрдЯреНрд╕


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


рдПрдХ рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП:


  1. рдирдП рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрдВрджрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдУ;
  2. StatelessWidget рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдЗрдирд╣реЗрд░рд┐рдЯ;
  3. рдПрдХ build() рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ рдЬреЛ BuildContext рдХреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ Widget рд▓реМрдЯрд╛рддреА рд╣реИред

 import 'package:flutter/widgets.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Center( child: MyStatelessWidget() ), ), ); class MyStatelessWidget extends StatelessWidget { //  @override   ,    , //         //  ,       @override Widget build(BuildContext context) { // [context]    return Text('Hello!'); } } 

рдЙрджрд╛рд╣рд░рдг рдПрдХ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ:


 // тАж class MyStatelessWidget extends StatelessWidget { //   Stateless      final,   const final String name; //   MyStatelessWidget(this.name); //   @override Widget build(BuildContext context) { // [context]     return Text('Hello, $name!'); } } 

рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реИ ...


рд╣реЙрдЯ рд░реАрд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рдЬреЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдмрджрд▓рддреЗ рд╕рдордп, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬрдм рд╣рдордиреЗ main() рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рд┐рдЬреЗрдЯ рд╣рдЯрд╛ рджрд┐рдпрд╛, рддреЛ рд╣реЙрдЯ-рд░реАрд▓реЛрдб рдиреЗ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред


рдпрд╣ рд╕рдордЭрдирд╛ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣реЙрдЯ рд╕реНрд╡реИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░рдг, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рдкрд░рд┐рдорд╛рдг рдзреАрдорд╛ рдХрд░рдиреЗ рдХрд╛ рдХреНрд░рдо рдЪрд▓рд╛рддрд╛ рд╣реИред


GestureDetector рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдХрд╛рд░реНрд░рд╡рд╛рдИ GestureDetector рд╡рд┐рдЬреЗрдЯ


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


рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рдПрдХ рдмрдЯрди рдмрдирд╛рдПрдБ, рдЬрдм рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╕рдВрджреЗрд╢ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛:


 import 'package:flutter/widgets.dart'; main() => runApp( Directionality( textDirection: TextDirection.ltr, child: Container( color: Color(0xFFFFFFFF), child: App(), ), ), ); class App extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: GestureDetector( //     onTap: () { //    GestureDetector //    ,      print('You pressed me'); }, child: Container( //     decoration: BoxDecoration( //   shape: BoxShape.circle, //     color: Color(0xFF17A2B8), //      ), width: 80.0, height: 80.0, ), ), ); } } 

рдиреАрд▓реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВред рд╣рдо рдмрд╛рд░-рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ ... рдареАрдХ рд╣реИ, рдЪрд┐рдкрдХрдирд╛ рдмрдВрдж рдХрд░реЛред


рд╕реНрдЯреЗрдЯрдлреБрд▓ рд╡рд┐рдЬреЗрдЯ


StatefulWidget - StatelessWidget рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд░рд▓, рд╕рд░рд▓ рднреАред рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рд╣реИ: рд╡реЗ рдЦреБрдж рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд┐рдЬреЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдЗрд╕рдХрд╛ рджреГрд╢реНрдп рднрд╛рдЧ (рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рдЬреЗрдЯреНрд╕) рднреА рдЗрд╕рдХрд╛ рд░рд╛рдЬреНрдп рдмрди рдЬрд╛рддрд╛ рд╣реИред


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреЗрдЯ рд╡рд░реНрдЧ рджреЗрдЦреЗрдВ:


 // тАж class Counter extends StatefulWidget { //      ,     , //   createState() @override State<Counter> createState() => _CounterState(); //        State, //   State<> } 

рдКрдкрд░, рд╣рдордиреЗ рдПрдХ "рд░рд┐рдХреНрдд" рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдиреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ createState() рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдкреНрд░рд╕реНрддреБрддрд┐ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдпрд╣ рдкреГрдердХреНрдХрд░рдг рдлрд╝реНрд▓рдЯрд░ рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


рд░рд╛рдЬреНрдп рд╡рд╕реНрддреБ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реАрдзреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд▓рдЧрднрдЧ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд StatelessWidget рд╕рдорд╛рди рд╣реИред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдЕрдВрддрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧ рд╣реИред


 // тАж class _CounterState extends State<Counter> { //    -    , //      . //   ,     int counter = 0; //     ,       //   ,      Stateless . @override Widget build(BuildContext context) { //          , //     тАФ  : return Center( child: GestureDetector( onTap: () { //  ,   ,    //  counter. setState(() { // setState()   ,    //      ,    ++counter; }); }, child: Container( decoration: BoxDecoration( shape: BoxShape.circle, color: Color(0xFF17A2B8), ), width: 80.0, child: Center( child: Text( //    counter '$counter', //      style: TextStyle(fontSize: 30.0), ), ), ), ), ); } } 

рдХрд╛рдЙрдВрдЯрд░ рдЕрдк рд╣реЛ рд░рд╣рд╛ рд╣реИ


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


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


 import 'package:flutter/widgets.dart'; main() => runApp(App()); class App extends StatelessWidget { @override Widget build(BuildContext context) { return Directionality( textDirection: TextDirection.ltr, child: Container( padding: EdgeInsets.symmetric( vertical: 60.0, horizontal: 20.0, ), color: Color(0xFFFFFFFF), child: Content(), ), ); } } class Content extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [ Counter('Manchester United'), Counter('Juventus'), ], ); } } class Counter extends StatefulWidget { final String _name; Counter(this._name); @override State<Counter> createState() => _CounterState(); } class _CounterState extends State<Counter> { int count = 0; @override Widget build(BuildContext context) { return Container( margin: EdgeInsets.only(bottom: 10.0), padding: EdgeInsets.all(4.0), decoration: BoxDecoration( border: Border.all(color: Color(0xFFFD6A02)), borderRadius: BorderRadius.circular(4.0), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ // widget тАФ    State,    //      ,      _CounterLabel(widget._name), _CounterButton( count, onPressed: () { setState(() { ++count; }); }, ), ], ), ); } } class _CounterLabel extends StatelessWidget { static const textStyle = TextStyle( color: Color(0xFF000000), fontSize: 26.0, ); final String _label; _CounterLabel(this._label); @override Widget build(BuildContext context) { return Text( _label, style: _CounterLabel.textStyle, ); } } class _CounterButton extends StatelessWidget { final _count; final _onPressed; _CounterButton(this._count, {@required this._onPressed}); @override Widget build(BuildContext context) { return GestureDetector( onTap: () { _onPressed(); }, child: Container( padding: EdgeInsets.symmetric(horizontal: 6.0), decoration: BoxDecoration( color: Color(0xFFFD6A02), borderRadius: BorderRadius.circular(4.0), ), child: Center( child: Text( '$_count', style: TextStyle(fontSize: 20.0), ), ), ), ); } } 

рд╕реНрдкрдВрджрди рдкрд░ рдПрдХ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рддрд┐


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


рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдЕрд╡рдХрд╛рд╢ рдореЗрдВ рдХреБрдЫ рдФрд░ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ:


Source: https://habr.com/ru/post/hi430918/


All Articles