bindings_interface.dart
2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// ignore: one_member_abstracts
// ignore: one_member_abstracts
abstract class BindingsInterface<T> {
  T dependencies();
}
/// [Bindings] should be extended or implemented.
/// When using `GetMaterialApp`, all `GetPage`s and navigation
/// methods (like Get.to()) have a `binding` property that takes an
/// instance of Bindings to manage the
/// dependencies() (via Get.put()) for the Route you are opening.
// ignore: one_member_abstracts
@Deprecated('Use Binding instead')
abstract class Bindings extends BindingsInterface<void> {
  @override
  void dependencies();
}
// /// Simplifies Bindings generation from a single callback.
// /// To avoid the creation of a custom Binding instance per route.
// ///
// /// Example:
// /// ```
// /// GetPage(
// ///   name: '/',
// ///   page: () => Home(),
// ///   // This might cause you an error.
// ///   // binding: BindingsBuilder(() => Get.put(HomeController())),
// ///   binding: BindingsBuilder(() { Get.put(HomeController(); })),
// ///   // Using .lazyPut() works fine.
// ///   // binding: BindingsBuilder(() => Get.lazyPut(() => HomeController())),
// /// ),
// /// ```
// class BindingsBuilder<T> extends Bindings {
//   /// Register your dependencies in the [builder] callback.
//   final BindingBuilderCallback builder;
//   /// Shortcut to register 1 Controller with Get.put(),
//   /// Prevents the issue of the fat arrow function with the constructor.
//   /// BindingsBuilder(() => Get.put(HomeController())),
//   ///
//   /// Sample:
//   /// ```
//   /// GetPage(
//   ///   name: '/',
//   ///   page: () => Home(),
//   ///   binding: BindingsBuilder.put(() => HomeController()),
//   /// ),
//   /// ```
//   factory BindingsBuilder.put(InstanceBuilderCallback<T> builder,
//       {String? tag, bool permanent = false}) {
//     return BindingsBuilder(
//         () => Get.put<T>(builder(), tag: tag, permanent: permanent));
//   }
//   /// WARNING: don't use `()=> Get.put(Controller())`,
//   /// if only passing 1 callback use `BindingsBuilder.put(Controller())`
//   /// or `BindingsBuilder(()=> Get.lazyPut(Controller()))`
//   BindingsBuilder(this.builder);
//   @override
//   void dependencies() {
//     builder();
//   }
// }
typedef BindingBuilderCallback = void Function();