ការរួមបញ្ចូល Flutter ជាមួយការកាន់កាប់ container យ៉ាងច្បាស់។
ProviderScope អាចគ្រប់គ្រង container ឬទទួល container ពីខាងក្រៅ។ API របស់ Consumer រក្សាការចូលប្រើ WidgetRef ឲ្យស្របគ្នាជាមួយកូដបែប Riverpod។
ការកាន់កាប់ ProviderScope
ការកាន់កាប់ container ប្ដូរភារកិច្ចការដកចេញ។
Container ខាងក្នុង
ProviderScope(child: ...) ដកចេញដោយស្វ័យប្រវត្តិ
Container ខាងក្រៅ
ProviderScope(container: c, ...) ត្រូវឲ្យអ្នកហៅ c.dispose()
Scope ដែលមិនបានគ្រប់គ្រង
UncontrolledProviderScope មិនដែលដកចេញ container ទេ
កំហុសដែលជួបញឹកញាប់
ក្នុង widget tests សូមចងចាំដកចេញ ProviderContainer ដែលបានបញ្ចូលពីខាងក្រៅ ដើម្បីជៀសវាង timer ដែលនៅសេសសល់។
បម្រែបម្រួល Consumer
ជម្រើសទាំងអស់បង្ហាញ WidgetRef; ជ្រើសតាមរចនាប័ទ្មវីដជិត និងតម្រូវការរដ្ឋមូលដ្ឋាន។
ឬសកម្មភាព
ពេលណាត្រូវប្រើមួយណា
Consumer: ប្លុក builder មូលដ្ឋានសម្រាប់តំបន់ reactive តូចៗ.
ConsumerWidget: វីដជិតគ្មាន state ជាមួយ build(context, ref).
ConsumerStatefulWidget: វីដជិតមាន state ដែលមាន ref នៅក្នុង ConsumerState.
ឧទាហរណ៍៖ ConsumerStatefulWidget
ប្រើ ConsumerState ពេលអ្នកត្រូវការ WidgetRef និង UI state ដែលអាចផ្លាស់ប្ដូរក្នុងមូលដ្ឋាន។
class HomePage extends ConsumerStatefulWidget {
const HomePage({super.key});
@override
ConsumerState<HomePage> createState() => _HomePageState();
}
class _HomePageState extends ConsumerState<HomePage> {
bool expanded = false;
@override
Widget build(BuildContext context) {
final user = ref.watch(currentUser);
return Column(
children: [
Text('$user'),
Switch(
value: expanded,
onChanged: (v) => setState(() => expanded = v),
),
],
);
}
}
ជំហានបន្ទាប់
ការសាកល្បង
ផ្ទៀងផ្ទាត់ lifecycle នៃ container, overrides និងការធ្វើបច្ចុប្បន្នភាព async ក្នុង unit និង widget tests។
បើកការសាកល្បងឯកសារយោង API
មើល signature សម្រាប់ ProviderScope, WidgetRef និង methods របស់ container។
បើកឯកសារយោង API