Как я могу создать трепетание таблицы?

#flutter #dart #datatable

Вопрос:

У меня есть три списка, и я должен сгенерировать таблицу

Эти Списки Из Пользовательского Ввода

 px =[0.1,0.2,0.3,........]; x= [0,1,2,........];  

И этот 3-й список является Умножением 1-го на 2-й список

 Mutiply=[0,0.2,0.6,......];  

Я хочу сгенерировать таблицу

Пример прилагаемого изображения требуемого конечного результата

Длина списка зависит от ввода пользователем, поэтому (как я могу сгенерировать таблицу)

Ответ №1:

Простой подход будет заключаться в создании класса модели для функции, например

 class F {  final double x;  final double px;  final double multiply;  F({  required this.x,  required this.px,  }) : multiply = x * px; }  

На уровне штата будет a Listlt;Fgt; data , и он будет увеличиваться при вводе пользователем.

Для динамического увеличения потока данных мы можем сопоставить его и передать дальше rows:

 data .map(  (f) =gt; DataRow(  cells: [  DataCell(Text(f.x.toString())),  DataCell(Text(f.px.toString())),  DataCell(Text(  f.multiply.toStringAsFixed(3),  )),  ],  ),  )  .toList()  

Полный Виджет

  class UserManager extends StatefulWidget {  const UserManager({Key? key}) : super(key: key);   @override  _UserManagerState createState() =gt; _UserManagerState(); }  class _UserManagerState extends Statelt;UserManagergt; {  Listlt;Fgt; data = [];   final xController = TextEditingController();  final pxController = TextEditingController();   @override  Widget build(BuildContext context) {  return Scaffold(  body: Column(  children: [  TextField(  controller: xController,  decoration: const InputDecoration(hintText: "x"),  ),  TextField(  controller: pxController,  decoration: const InputDecoration(hintText: "px"),  ),  ElevatedButton(  onPressed: () {  // get Text and parse to double  final xVal = xController.text.toString();  final pxVal = pxController.text.toString();   double? x = double.tryParse(xVal);  double? px = double.tryParse(pxVal);   if (x == null || px == null) {  /// allow only number  return;  }  // else add to data list  setState(() {  data.add(F(x: x, px: px));  });   /// clear  xController.clear();  pxController.clear();  },  child: Text("ADD")),  DataTable(  headingRowColor:  MaterialStateProperty.all(Colors.blueGrey.withOpacity(.5)),  showBottomBorder: true,  columns: const [  DataColumn(  label: Text("x"),  ),  DataColumn(  label: Text("p(x)"),  ),  DataColumn(  label: Text("x*p(x)"),  ),  ],  rows: data  .map(  (f) =gt; DataRow(  cells: [  DataCell(Text(f.x.toString())),  DataCell(Text(f.px.toString())),  DataCell(Text(  f.multiply.toStringAsFixed(3),  )),  ],  ),  )  .toList()),  ],  ),  );  } }