MVC模式,不做解释。
class M {
request() {}
}
class V {
Function afunc;
onTap() {
afunc();
}
}
class C {
test() {
V v = V();
M m = M();
v.afunc = () {
m.request();
};
}
}
扩展一下
abstract class IPage {
Map makeParams();
bool checkParams();
success();
failure();
}
abstract class ILoginPage extends IPage {
Function loginFunc;
Function gotoFunc;
}
class LoginPageImpl implements ILoginPage {
@override
Function loginFunc;
@override
Function gotoFunc;
onTap1() {
loginFunc();
}
onTap2() {
gotoFunc();
}
@override
Map makeParams() {
return null;
}
@override
bool checkParams() {
return true;
}
@override
success() {}
@override
failure() {}
}
abstract class ILoginModel {
bool requestLogin(Map params, Function callback);
}
class LoginModelImpl implements ILoginModel {
@override
bool requestLogin(Map params, Function callback) {}
}
class Controller {
test() {
ILoginModel model = new LoginModelImpl();
ILoginPage page = new LoginPageImpl();
page.gotoFunc = () {
Navigator.push(null, null);
};
page.loginFunc = () {
Map params = page.makeParams();
if (page.checkParams()) {
model.requestLogin(params, (resJosn) {
if (resJosn == true) {
page.success();
} else {
page.failure();
}
});
}
};
}
}
以上仅供参考。
注意事项:
- page中,Function对象(f1, f2 )的参数类型和个数不能固定,多人开发时需定义好格式。
- 性能未测。
- 由于刚学习flutter一周时间,不知道此思路是否可行,仅供参考,欢迎大家讨论指正。
网友评论