Android рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрдиред рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП UI рдХреИрд╕реЗ рдмрдирд╛рдПрдВ

Android рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдкрдВрджрдиред рдлрд╝реНрд▓рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП UI рдХреИрд╕реЗ рдмрдирд╛рдПрдВ


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


рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


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


рдбрд╛рд░реНрдЯ OOP рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП Android рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред


рд▓рдХреНрд╖реНрдп


рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕реНрдкрдВрджрди рд╡рд┐рдЧреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:


рдЧрддрд┐рд╡рд┐рдзрд┐ рдпреВрдЖрдИ


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк FlutterActivity рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╡рд╣рд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FlutterActivity ред рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдлрд╝реНрд▓рдЯрд░ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рдХреИрд╕реЗ? рдордЪрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рд╕рдВрд▓рдЧреНрдиред рдордЪрд╛рди )ред


рдкрд╛рдбрд╝


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


рдпрд╛рдж рд░рдЦреЗрдВ, рд╕реНрдкрдВрджрди рдореЗрдВ рдХреЛрдИ рднреА рдШрдЯрдХ рдПрдХ рд╡рд┐рдЬреЗрдЯ рд╣реИ ред

рд╕реНрдкрдВрджрди рдореЗрдВ рд╡рд┐рдЬреЗрдЯ


рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдкрд╛рдбрд╝ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреЛ рд╕рд╛рдЗрдб рдореЗрдиреВ, рдирд┐рдЪрд▓рд╛ рдкреИрдирд▓, рдЯреВрд▓рдмрд╛рд░, рд╕рд╛рдордЧреНрд░реА рдХреНрд╖реЗрддреНрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред


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


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( ), )); 

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


 void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, ), )); 

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


рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдордЪрд╛рди рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЖрдЗрдП рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдЧреБрдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред


1. AppBar (рдЯреВрд▓рдмрд╛рд░)


AppBar рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╡рд╣реА Toolbar рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдЕрдкрдиреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ AppBar рдЧреБрдг рдХрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред


AppBar рдЧреБрдг


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


  • рд╢реАрд░реНрд╖рдХ : Text рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рд▓рд┐рдкрдЯрд╛ рдПрдХ рдЯреВрд▓рдмрд╛рд░ рд╢реАрд░реНрд╖рдХред


  • рдХреНрд░рд┐рдпрд╛рдПрдБ : рдпрд╣ menu.xml рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдореЗрдиреВ рдЖрдЗрдЯрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <item/> рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛ рдЧреБрдг рдореЗрдиреВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрди рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЛ IconButtons рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬреЛ <item/> рдмрд░рд╛рдмрд░ рд╣реЛрддреЗ рд╣реИрдВред


  • рдиреАрдЪреЗ : рдЖрдорддреМрд░ рдкрд░ AppBar рдХреЗ рддрд╣рдд рд╕реНрдерд┐рдд рдПрдХ TabBar рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


  • FlexSpace : рдЗрд╕ рд╡рд┐рдЬреЗрдЯ CollapsingToolbarLayout (рдмрдВрдзрдиреЗрд╡рд╛рд▓рд╛ рдЙрдкрдХрд░рдг рдкрдЯреНрдЯреА) рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдПрдХ рдЖрдЗрдХрди, рд╢реАрд░реНрд╖рдХ рдФрд░ рдореЗрдиреВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг Appbar рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, appBar: new AppBar( leading: new Icon(Icons.menu), title: new Text("My Title"), actions: <Widget>[ new IconButton( icon: new Icon(Icons.shopping_cart), onPressed: () {}, ), new IconButton( icon: new Icon(Icons.monetization_on), onPressed: () {}, ) ], ), ), )); 

рд╕рд░рд▓ AppBar


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


рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк AppBar рдХреЗ рдмрд╛рдХреА рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


2. рд╢рд░реАрд░ (рдХрд┐рд╕реА рднреА рджреГрд╢реНрдп рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░)


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


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, appBar: new AppBar( leading: new Icon(Icons.menu), title: new Text("My Title"), actions: <Widget>[ new IconButton( icon: new Icon(Icons.shopping_cart), onPressed: () {}, ), new IconButton( icon: new Icon(Icons.monetization_on), onPressed: () {}, ) ], ), body: new Container( color: Colors.red, ), ), )); 

рд╢рд╡


рд╢рд░реАрд░ рдХреЛ AppBar, FAB рдФрд░ рд╕рд╛рдЗрдбрдмрд╛рд░ рдХреЗ рдкреАрдЫреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рд╣рдордиреЗ рд╕реНрдХреИрдлреЛрд▓реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрд▓реЗ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдерд╛, рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд▓рд╛рд▓ рд░рдВрдЧ рдХрд╛ рд░рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреИрдлреЛрд▓реНрдб рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдУрд╡рд░рд▓реИрдк рдХрд░рддрд╛ рд╣реИред


3. рджрд░рд╛рдЬ (DrawerLayout)


рдпрд╣ рд╡рд┐рдЬреЗрдЯ DrawerLayout рдореЗрдВ рдПрдХ DrawerLayout рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓рд┐рдВрдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдИрдВ рдУрд░ рд╕реЗ DrawerLayout рдХрд░рддрд╛ рд╣реИред


рджрд░рд╛рдЬ


рджрд░рд╛рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ Scaffold.drawer рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Android рдХреА рддрд░рд╣, рд╣рдо DrawerLayout рдЕрдВрджрд░ NavigationView рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ Android рдФрд░ рд╕реНрдкрдВрджрди рдореЗрдВ рд╕рдорддреБрд▓реНрдп рджреГрд╢реНрдп рдШрдЯрдХреЛрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИред


Android рдФрд░ рд╕реНрдкрдВрджрди рдореЗрдВ рд╕рдорддреБрд▓реНрдп рджреГрд╢реНрдп рдШрдЯрдХ


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


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, appBar: new AppBar( title: new Text("My Title"), actions: <Widget>[ new IconButton( icon: new Icon(Icons.shopping_cart), onPressed: () {}, ), new IconButton( icon: new Icon(Icons.monetization_on), onPressed: () {}, ) ], ), drawer: new Drawer( child: new ListView( children: <Widget>[ new DrawerHeader( child: new Text("Drawer Header"), decoration: new BoxDecoration( color: Colors.blue, ), ), new Text("Item 1"), new Text("Item 2"), new Text("Item 3"), new Text("Item 4"), new Text("Item 5"), new Text("Item 6"), ], ), ), ), )); 

рджрд░рд╛рдЬ


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


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


4. рдмреЙрдЯрдирд╡реАрдЧреЗрд╢рдирдмреЗрд░ (рдмреЙрдЯрдирд╡реАрдЧреЗрд╢рди рд╡реНрдпреВ)


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


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


рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░, рдЖрдк app:menu="@menu/my_navigation_items" рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ BottomNavigationView рдореЗрдВ рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ app:menu="@menu/my_navigation_items" , рдЬрд╣рд╛рдВ my_navigation_items <item/> рдореЗрдВ рд╕рднреА рдореЗрдиреВ рдЖрдЗрдЯрдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рд╕реНрдкрдВрджрди items рдкреНрд░реЙрдкрд░реНрдЯреА items рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ BottomNavigationBarItem рд╕реВрдЪреА, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореЗрдиреВ рдореЗрдВ рдПрдХ рдЖрдЗрдХрди, рд╢реАрд░реНрд╖рдХ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИред


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, appBar: ..., body:..., drawer: ..., bottomNavigationBar: new BottomNavigationBar(items: [ new BottomNavigationBarItem( icon: new Icon(Icons.home), title: new Text("Home"), ), new BottomNavigationBarItem( icon: new Icon(Icons.search), title: new Text("Search"), ) ]), ), )); 

BottomNavigationBar


рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмреЙрдЯрдиреИрд╡рд┐рдЧреЗрд╢рдирдмреЗрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдореЗрдиреВ рдЖрдЗрдЯрдо рд╣реИрдВред


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


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


 import 'package:flutter/material.dart'; void main() => runApp(new MaterialApp( home: new Scaffold( backgroundColor: Colors.yellowAccent, appBar: new AppBar( title: new Text("My Title"), actions: <Widget>[ new IconButton( icon: new Icon(Icons.shopping_cart), onPressed: () {}, ), new IconButton( icon: new Icon(Icons.monetization_on), onPressed: () {}, ) ], ), body: new Container( color: Colors.red, ), drawer: new Drawer( child: new ListView( children: <Widget>[ new DrawerHeader( child: new Text("Drawer Header"), decoration: new BoxDecoration( color: Colors.blue, ), ), new Text("Item 1"), new Text("Item 2"), new Text("Item 3"), new Text("Item 4"), new Text("Item 5"), new Text("Item 6"), ], ), ), bottomNavigationBar: new BottomNavigationBar(items: [ new BottomNavigationBarItem( icon: new Icon(Icons.home), title: new Text("Home"), ), new BottomNavigationBarItem( icon: new Icon(Icons.search), title: new Text("Search"), ) ]), floatingActionButton: new FloatingActionButton( onPressed: (){}, child: new Icon(Icons.add), ), ), )); 

рдкрд╛рдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕


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


рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрдВ рд╡рд╣ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛, рдЬрд┐рд╕рдХреА рдЪрд░реНрдЪрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХреА рдЧрдИ рдереАред


рдирд┐рд╖реНрдХрд░реНрд╖


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

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


All Articles