颤振使用类

时间:2020-02-02 21:21:09

标签: flutter dart

我想将代码从主文件传输到另一个文件,所以我在另一个文件中创建了一个类。 现在,此类中有一个“ DataTable”小部件,我无法直接访问。

因此,我创建了一个称为“ DataTable”的“ var”。

  var table = _datatable();

当我在另一个文件中调用此“表”时,该表将运行两次。 我认为这是因为该类被调用并运行_datatable两次,一次是在声明变量“ table”时,一次是因为这是该类的一部分。

任何人都可以帮助改进我的代码吗?我是新来的人,并且我试图理解类的概念。

import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

class WireData{

static final _formatter = new NumberFormat("0.00");
static _datarow(String awg, double mm2, double kcmill) {
    return DataRow(cells: [
      DataCell(Text(awg)),
      DataCell(Text(_formatter.format(mm2))),
      DataCell(Text(_formatter.format(kcmill)))
    ]);
  }

static _dataColumn(String label, bool numeric, String tooltip){
  return DataColumn(label: Text(label), numeric: numeric, tooltip: tooltip);
}

  var table = _datatable();
  static DataTable _datatable(){ 
    return DataTable(
              columns: [
                _dataColumn('AWG', false, "American Wire Gauge"),
                _dataColumn('mm²', true, "Square milimeter"),
                _dataColumn('kcmil', true, "kcmil"),
              ],
              rows: [
                _datarow('26', 0.128566467, 0.2537291679),
                _datarow('25', 0.162140718, 0.3199887993),
                _datarow('24', 0.204482653, 0.4035516775),
                _datarow('23', 0.257881895, 0.5089364297),
                _datarow('22', 0.325225982, 0.6418416839),
                _datarow('21', 0.410156515, 0.8094542350),
                _datarow('20', 0.517266075, 1.0208376550),
                _datarow('19', 0.652346560, 1.2874224030),
                _datarow('18', 0.822702387, 1.6236239270),
                _datarow('17', 1.037545470, 2.0476221730),
                _datarow('16', 1.308493349, 2.5823446530),
                _datarow('15', 1.650197407, 3.2567062380),
                _datarow('14', 2.081135135, 4.1071727210),
                _datarow('13', 2.624609294, 5.1797326900),
                _datarow('12', 3.310007999, 6.5323843380),
                _datarow('11', 4.174393872, 8.2382716750),
                _datarow('10', 5.264508184, 10.389639780),
                _datarow('9', 6.639298368,  13.102822910),
                _datarow('8', 8.373105573,  16.524535190),
                _datarow('7', 10.55968463,  20.839804160),
                _datarow('6', 13.31727380,  26.281976000),
                _datarow('5', 16.79498847,  33.145333660),
                _datarow('4', 21.18088445,  41.801010080),
                _datarow('3', 26.71212706,  52.717057000),
                _datarow('2', 33.68781572,  66.483754650),
                _datarow('1', 42.48515761,  83.845530930),
                _datarow('1/0', 53.57986496, 105.7412159),
                _datarow('2/0', 67.57187899, 133.3548088),
                _datarow('3/0', 85.21781146, 168.1795019),
                _datarow('4/0', 107.4718581, 212.0984246),
                _datarow('', 126.68, 250),
                _datarow('', 152.01, 300),
                _datarow('', 177.35, 350),
                _datarow('', 202.68, 400),
                _datarow('', 228.02, 450),
                _datarow('', 253.35, 500),
                _datarow('', 380.03, 750),
              ],
              );
            }
}

1 个答案:

答案 0 :(得分:0)

为此找到了解决方案,我必须删除var table = _datatable();并将_datatable重命名为datatable。这使得该小部件变得可见,并且我不需要任何技巧就可以直接调用它。

因此,在另一个文件中,我用以下名称称呼:tables.WireData.datatable(),,在该类中,我给全班起了“表”的昵称。