如何在Flutter中监听DataTable中的DataRow

时间:2018-10-26 16:36:40

标签: datatable dart flutter flutter-layout

我能够设置一个DataTable来显示一堆数据。但是要在点击某行时导航到另一个屏幕。

很遗憾,DataRow没有onTap回调。

我最终为每个DataCell添加了onTap,这看起来像是一个骇人听闻的解决方案。还有其他方法可以解决吗?

2 个答案:

答案 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);
    }
);