我能够设置一个DataTable来显示一堆数据。但是要在点击某行时导航到另一个屏幕。
很遗憾,DataRow没有onTap回调。
我最终为每个DataCell添加了onTap,这看起来像是一个骇人听闻的解决方案。还有其他方法可以解决吗?
答案 0 :(得分:0)
您可以用GestureDetector包装整行。
class CircleView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor.clear
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
if let context = UIGraphicsGetCurrentContext() {
context.setLineWidth(1.0);
UIColor.red.set()
let center = CGPoint(x: frame.size.width/2, y: frame.size.height/2)
let radius = (frame.size.width - 10)/2
context.addArc(center: center, radius: radius, startAngle: 0.0, endAngle: .pi * 2.0, clockwise: true)
context.strokePath()
context.closePath()
context.setFillColor(UIColor.black.cgColor)
context.fillPath()
}
}
}
答案 1 :(得分:0)
DataRow 中的 onTap 调用是 onSelectChanged 函数
DataRow(
cells: [
DataCell(Text("ID"))
,DataCell(Text("NAME"))
],
onSelectChanged: (value) {
// insert your navigation function here and use the selected value returned by the function
Navigator.of(context).pop(value);
}
);