我将为此解释用例
我有一个继承的窗口小部件,其中包含一些值,例如BaseApiUrl和appname
class Config extends InheritedWidget {
Config({
@required this.appName,
@required this.flavorName,
@required this.apiBaseUrl,
@required Widget child,
}) : super(child: child);
final String appName;
final String flavorName;
final String apiBaseUrl;
static Config of(BuildContext context) {
return context.inheritFromWidgetOfExactType(Config);
}
@override
bool updateShouldNotify(InheritedWidget oldWidget) => false;
}
这在基于上下文的类中很好用,但是如果我在需要apiBaseUrl
的地方有这个类怎么办
import 'dart:async';
import 'package:http/http.dart';
class LoginRequest {
Client client = Client();
Future<Response> login(credentials) async => await client.get('');
}
这能完成吗?
答案 0 :(得分:0)
上下文很重要,因此Flutter知道树中要在哪里查找InheritedWidget实例,因为可能有多个。如果这不是您的用例,则可以考虑将所需的数据移动到普通的单例类(而不是小部件)中。