Fai*_*wan 1 dart flutter flutter-getx
我正在尝试定义一个extension函数GetInterfaceas
extension FindOrPut on GetInterface {
S findOrPut<S>(S dependency,{String? tag}){
if(GetInstance().isRegistered<S>(tag: tag)){
return GetInstance().find<S>(tag: tag);
}
return GetInstance().put<S>(dependency,tag: tag);
}
}
Run Code Online (Sandbox Code Playgroud)
与GETxextension Inst on GetInterface团队开发的相同。但我的代码没有按预期工作。
注意:如果我将扩展功能代码放在将要使用它的同一个文件中;效果很好。但如果我把上面的代码放在单独的文件函数中,在 Get 上找不到。
我在 GetInterface 上创建了 FindOrPut 扩展。请检查下面的代码,它工作正常。
import 'package:amigo/src/controllers/test_controller.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
extension FindOrPut on GetInterface {
S findOrPut<S>(
S dependency, {
String? tag,
bool permanent = false,
InstanceBuilderCallback<S>? builder,
}) {
if (GetInstance().isRegistered<S>(tag: tag)) {
return GetInstance().find<S>(tag: tag);
}
return GetInstance().put<S>(dependency, tag: tag, permanent: permanent);
}
}
class ExtensionTesting extends StatelessWidget {
ExtensionTesting({Key? key}) : super(key: key);
//TODO: Include your getx controller here with findOrPut function
final TestController _testController = Get.findOrPut(TestController());
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white30,
child: Obx(() => Text(_testController.name.value)),
);
}
}
Run Code Online (Sandbox Code Playgroud)
有关工作代码,请检查Extension_method_implementation存储库。
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |