flutter - Dart 扩展 - 出现“不是类型”错误
问题描述
我正在尝试扩展 BuildContext,更多的是为了我的学习。但是,我收到此错误:
AppBuildContext 不是一种类型。尝试更正名称以匹配现有类型
我已将此添加到我正在使用它的文件中:
extension AppBuildContext on BuildContext {
ThemeData get theme {
return Theme.of(this);
}
FocusScopeNode get focusScope {
return FocusScope.of(this);
}
NavigatorState get navigator {
return Navigator.of(this);
}
T args<T>() {
return ModalRoute.of(this).settings.arguments as T;
}
}
我这样使用它:
class LoginView extends StatelessWidget {
@override
Widget build(AppBuildContext context) {
return Scaffold(
body: Center(
child: VpGradientContainer(
beginColor: initialGradientColor,
endColor: Theme.of(context).colorScheme.primary,
child: Column(...
我究竟做错了什么?
颤振和飞镖版本:
Flutter 1.22.2 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 84f3d28555 (3 days ago) • 2020-10-15 16:26:19 -0700
Engine • revision b8752bbfff
Tools • Dart 2.10.2
解决方案
该AppBuildContext
名称仅用于声明导入限制。为了使用它,你仍然调用BuildContext
.
import 'AppBuildContext.dart'; // import the file that contains the extension manully
class LoginView extends StatelessWidget {
@override
Widget build(BuildContext context) { // just use normal BuildContext
return Scaffold(
body: Center(
child: VpGradientContainer(
beginColor: initialGradientColor,
endColor: context.theme.colorScheme.primary,
child: Column(...),
推荐阅读
- python - “在 python 中更新生成器对象,通过分配不同的值”
- python - Python pandas:如何通过在另一列中匹配元素来创建列表
- three.js - 无法在 WebGL/GLSL 中使用整数索引初始化向量数组?
- html - 保存并刷新所有内容后不会发生任何更改
- json - MongoDB Compass 导出带有不需要的元数据的集合
- javascript - 在 JavaScript 中创建 XML
- java - 迁移到 New Places SDK 客户端 | E/SchedPolicy:set_timerslack_ns 写入失败:不允许操作
- javascript - 当您到达幻灯片中的最后一个 div 时,如何跳回第一个 div?
- set - AMPL:集合的语法?
- r - 如何在循环中修复“下标越界”错误