我想将代码从主文件传输到另一个文件,所以我在另一个文件中创建了一个类。 现在,此类中有一个“ 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),
],
);
}
}
答案 0 :(得分:0)
为此找到了解决方案,我必须删除var table = _datatable();
并将_datatable
重命名为datatable
。这使得该小部件变得可见,并且我不需要任何技巧就可以直接调用它。
因此,在另一个文件中,我用以下名称称呼:tables.WireData.datatable(),
,在该类中,我给全班起了“表”的昵称。