flutter - 上下文未定义
问题描述
我试图通过单击列表中的一个项目来转到另一个页面,但他说上下文是未定义的。我做错了什么?有什么建议吗?感谢您的帮助
我在代码中评论了第一个显示未定义的上下文。
class ListaServidores extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.black,
centerTitle: true,
title: Text("Lista de servidores"),
),
body: ContactList(kContacts)
);
}
}
class ContactList extends StatelessWidget {
final List<Contact> _contacts;
ContactList(this._contacts);
@override
Widget build(BuildContext context) {
return ListView(
padding: EdgeInsets.symmetric(vertical: 8.0),
children: _buildContactList()
);
}
List<_ContactListItem> _buildContactList() {
return _contacts.map((contact) => _ContactListItem(contact))
.toList();
}
}
class _ContactListItem extends ListTile {
_ContactListItem(Contact contact) :
super(
onTap:(){//here context undefined
Navigator.push(context, MaterialPageRoute(builder: (context)=>
NovoSigilo(servidor: contact.oservidor)));
},
title : Text(
contact.oservidor,
style: TextStyle(
fontSize: 18.0, fontWeight: FontWeight.bold),
),
subtitle: Text(contact.texto, overflow: TextOverflow.ellipsis),
leading: CircleAvatar(
backgroundColor: Colors.white,
child: Image.asset(contact.img),
)
);
}
解决方案
不要扩展小部件。相反,使用组合。
class _ContactListItem extends StatelessWidget {
const _ContactListItem({Key key, this.contact}) : super(key: key);
final Contact contact;
@override
Widget build(BuildContext context) {
return ListTile(
onTap: () {
// ...
},
title: Text('...'),
);
}
}
这将解决您在此过程中的问题。
推荐阅读
- python - 如何在 Python 中从表 PostgreSQL 中提取数据
- python-3.x - 为什么我会得到一个“无”响应?这到底是什么意思?
- linux - 当tracing_threshold 不为零时,function_graph 插件无法记录 function_entry 记录
- haskell - Nix 构建无法构建 haskell 包“由于来自 Cabal 的严重配置时警告而中止”“未找到 uhc”
- javascript - Flask - 检查服务器上是否存在文件,如果存在则返回警报
- c# - 在c#中获取最大柱形图的标签
- javascript - 允许使用 Express JS 和 HTML5 fetch() 进行跨域请求
- r - 制作数据框,并使用它来创建直方图
- python - 即使某些元素不存在,也要刮掉所有东西
- laravel - 如何在 laravel (sweetalert2) 中包含来自 node_modules 的文件