Line data Source code
1 : import 'package:flutter/widgets.dart'; 2 : 3 : import 'injector_x.dart'; 4 : 5 : class _InjectHandlerWidget extends Inject<_InjectHandlerWidget> { 6 2 : _InjectHandlerWidget({List<Needle>? needles}) : super(needles: needles); 7 : late InjectorX injectorX; 8 1 : @override 9 : void injector(InjectorX handler) { 10 1 : injectorX = handler; 11 : } 12 : } 13 : 14 : mixin _InjectHandlerWidgetMixin { 15 : final Map<String, _InjectHandlerWidget> handlerMap = {}; 16 3 : _InjectHandlerWidget get handler => handlerMap["handler"]!; 17 3 : set handler(_InjectHandlerWidget h) => handlerMap["handler"] = h; 18 : } 19 : 20 : abstract class StatefulWidgetInject<T extends StatefulWidgetInject<T>> 21 : extends StatefulWidget with _InjectHandlerWidgetMixin { 22 1 : StatefulWidgetInject({List<Needle>? needles}) { 23 2 : this.handler = _InjectHandlerWidget(needles: needles); 24 : } 25 : 26 1 : T get<T>() { 27 3 : return handler.injectorX.get<T>(); 28 : } 29 : 30 1 : T injectMocks(List<NeedleMock> needleMocks) { 31 2 : handler.injectMocks(needleMocks); 32 1 : this.createState(); 33 : return this as T; 34 : } 35 : }