
рдХрд▓, рдореЗрд░реЗ рдЕрдЪреНрдЫреЗ рджреЛрд╕реНрдд рдиреЗ рдХреБрдЫ рдРрд╕рд╛ рдХрд╣рд╛, "рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдСрдлрд╝рд▓рд╛рдЗрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдЗрди рд╕рднреА рдзрд╛рд░рд╛рдУрдВ рдФрд░ рдзрд╛рд░рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред" рдореБрдЭреЗ рднреА рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЕрдиреНрдп рдПрдиреНрдХреЛрдбрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ, рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ 50 рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ, рдореИрдВ рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдЬреЛ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рд╣реИ
a) рдпрд╣ рдСрдлрд╝рд▓рд╛рдЗрди / рдСрдирд▓рд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ
b) рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ
рдЧ) рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ
рдореЗрд░реЗ рдЬрд▓реНрджрдмрд╛рдЬреА рдХреЗ рдЖрд▓реЛрдЪрдХреЛрдВ рдХреЛ
рдЬреЛ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ-рд╕рдордЭреЗ рдпреБрджреНрдз рдореЗрдВ рднрд╛рдЧ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ BlocProvider
рдПрдХ рдкреНрд░рджрд╛рддрд╛ рд╣реИ , рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдореВрд▓ рд▓реЗрдЦ , рдПрдХ рд▓рд┐рдВрдХ, рдЬреЛ рдлрд╝реНрд▓рдЯрд░_рдмреНрд▓реЙрдХ рдкреГрд╖реНрда рдкрд░ рд╣реИ, рд╡рд░реНрдгрди рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдПрдХ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг "рдХрд╛рдЙрдВрдЯрд░" рдЬреЛ рдПрдХ рд╕реНрдкрдВрджрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЪрд╛рдмреБрдХ рдорд╛рд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдбрд╝рдХрд╛ рдХрдИ рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБред
рддреЛ, рдЗрд╕рдореЗрдВ MyHomePage extends StatefulWidget
рд╢рд╛рдорд┐рд▓ MyHomePage extends StatefulWidget
, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП _incrementCounter
рд╡рд┐рдзрд┐ рдФрд░ рдкреВрд░реЗ рд╡рд┐рдЬреЗрдЯ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ setState
рд▓рд┐рдП setState
ред
рд╣рдо rxdart
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдХреБрдЫ рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп rxdart
:
Pubspec.yaml рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬреЛрдбрд╝реЗрдВ
dependencies: ... rxdart: 0.22.2
рдХрд╛рдЙрдВрдЯрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрджрд▓реЗрдВ рдФрд░ рдИрд╡реЗрдВрдЯ рдЬреЛрдбрд╝реЗрдВ
class _Counter { int _count; int get count => _count; _Counter(this._count) : this.onCounterUpd = BehaviorSubject<int>.seeded(_count);
StreamBuilder рдореЗрдВ рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдЬреЗрдЯ рд▓рдкреЗрдЯреЗрдВ рдФрд░ рдХреЙрд▓ рдХреЛ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓реЗрдВ
StreamBuilder<int>( stream: _counter.onCounterUpd, builder: (context, snapshot) { return Text( '${snapshot.data}', style: Theme.of(context).textTheme.display1, ); }), ... floatingActionButton: FloatingActionButton( onPressed: _counter.incrementCounter, ...
рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:rxdart/rxdart.dart'; class _Counter { int _count; int get count => _count; _Counter(this._count) : this.onCounterUpd = BehaviorSubject<int>.seeded(_count);
рдЕрдм рдпрд╣ рдХреЛрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ, рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рд╛рд▓рдЪ рд╕реЗ рдореБрдХреНрдд рд╣реИ, рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╕рдордп рдЖрдкрдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рдЬреЗрдЯ рдХреЗ рдкрд╛рда рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдпрд╣ рдХрд░реЗрдВ:
StreamBuilder<int>( stream: onCounterUpd, builder: (context, snapshot) { return Text( 'You have pushed the button ${snapshot.data} times:', ); }),
рдФрд░ рдЖрд╡рд╛рдЬ!

рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, InheritedWidget, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреИрдЯрд░реНрди рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдЗрд╕рд▓рд┐рдП, рдЙрдореНрдореАрдж рд╣реИ, рдореИрдВрдиреЗ рд╡рд╣ рдХрд░ рджрд┐рдЦрд╛рдпрд╛
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдмрд╣реБрдд рдЖрд╕рд╛рди
InheritedWidgets
, BlocProvider
, рдЖрджрд┐ред - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдСрдлрд╝рд▓рд╛рдЗрди / рдСрдирд▓рд╛рдЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд╡рд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рд╣реИ, рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдЙрддреНрддрд░рджрд╛рдпреА рдпреВрдЖрдИ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рддреЗрдЬреА рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░, рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рддреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕реБрд╢реЛрднрд┐рдд рдкреГрдердХреНрдХрд░рдг: рдПрдорд╡реАрд╕реА, рдПрдорд╡реАрдкреА, рдПрдорд╡реАрдЖрдИ, рдПрдорд╡реАрд╡реАрдПрдо, рдЬреЛ рднреА рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб (рд╢рд╛рдЦрд╛ iter_0004_rxdart
)
рдПрдХ рдШрдВрдЯреЗ рдмрд╛рдж рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╡реНрдпрд░реНрде рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рдерд╛, "рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░" рдХреЗ рд▓рд┐рдП рдХреНрд▓рд┐рдХреЗрдВ рдорд┐рд▓реАрдВ рдФрд░ BehaviorSubject
рдХреА рдПрдХ рдЧрд▓рдд рд╕рдордЭ рд╢реБрд░реВ рдХреА рдЧрдИ, рдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛,