editablegrid 0.0.4
editablegrid: ^0.0.4 copied to clipboard
A library created to speed up and simplify the process of creating simple editable grids.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:editablegrid/editable-grid.dart';
import 'package:editablegrid/models/grid-headers.dart';
import 'package:editablegrid/widgets/editable/editable-cell.dart';
import 'utils/grid-builder.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) => MaterialApp(
title: 'Editable Grid',
theme: ThemeData(
primarySwatch: Colors.blue,
),
//Examples:
//Multi-headers
home: MultiHeadersGrid(),
//Column headers only
//home: ColumnHeadersGrid(),
//Row headers only
//home: RowHeadersGrid(),
);
}
///Sample class that showcase the use of the editable-grid package for grids with multiple headers.
class MultiHeadersGrid extends StatefulWidget {
@override
State<StatefulWidget> createState() => _MultiHeadersGridState();
}
class _MultiHeadersGridState extends State<MultiHeadersGrid> {
@override
Widget build(BuildContext context) {
var mocks = CellsMock();
return GridBuilder.buildGridWrap(
context: context,
appBarTitle: 'Multi-headers grid',
grid: buildGrid(context, mocks),
editionCompletedCallback: () => mocks.showData(context));
}
EditableGridWidget buildGrid(BuildContext context, CellsMock mocks) {
return EditableGridWidget(
headers: EditableGridHeaders(
specifiedHeaders: GridHeaders.Both,
cHeaders: ["C1", "C2", "C3"],
rHeaders: ["R1", "R2"]),
gridCell: [
//Row 1
[
EditableCellWidget(cell: mocks.cellR1C1),
EditableCellWidget(cell: mocks.cellR1C2),
EditableCellWidget(cell: mocks.cellR1C3),
],
//Row 2
[
EditableCellWidget(cell: mocks.cellR2C1),
EditableCellWidget(cell: mocks.cellR2C2),
EditableCellWidget(cell: mocks.cellR2C3),
]
],
);
}
}
///Sample class that showcase the use of the editable-grid package for grids that only specify column headers.
class ColumnHeadersGrid extends StatefulWidget {
@override
State<StatefulWidget> createState() => _ColumnHeadersGridState();
}
class _ColumnHeadersGridState extends State<ColumnHeadersGrid> {
@override
Widget build(BuildContext context) {
var mocks = CellsMock();
return GridBuilder.buildGridWrap(
context: context,
appBarTitle: 'Column headers only grid',
grid: buildGrid(context, mocks),
editionCompletedCallback: () => mocks.showData(context));
}
EditableGridWidget buildGrid(BuildContext context, CellsMock mocks) {
return EditableGridWidget(
headers: EditableGridHeaders(
specifiedHeaders: GridHeaders.Columns,
cHeaders: ["C1", "C2", "C3"],
),
gridCell: [
//Row 1
[
EditableCellWidget(cell: mocks.cellR1C1),
EditableCellWidget(cell: mocks.cellR1C2),
EditableCellWidget(cell: mocks.cellR1C3),
],
//Row 2
[
EditableCellWidget(cell: mocks.cellR2C1),
EditableCellWidget(cell: mocks.cellR2C2),
EditableCellWidget(cell: mocks.cellR2C3),
]
],
);
}
}
///Sample class that showcase the use of the editable-grid package for grids that only specify row headers.
class RowHeadersGrid extends StatefulWidget {
@override
State<StatefulWidget> createState() => _RowHeadersGridState();
}
class _RowHeadersGridState extends State<RowHeadersGrid> {
@override
Widget build(BuildContext context) {
var mocks = CellsMock();
return GridBuilder.buildGridWrap(
context: context,
appBarTitle: 'Row headers only grid',
grid: buildGrid(context, mocks),
editionCompletedCallback: () => mocks.showData(context));
}
EditableGridWidget buildGrid(BuildContext context, CellsMock mocks) {
return EditableGridWidget(
headers: EditableGridHeaders(
specifiedHeaders: GridHeaders.Rows,
rHeaders: ["R1", "R2"],
),
gridCell: [
//Row 1
[
EditableCellWidget(cell: mocks.cellR1C1),
EditableCellWidget(cell: mocks.cellR1C2),
EditableCellWidget(cell: mocks.cellR1C3),
],
//Row 2
[
EditableCellWidget(cell: mocks.cellR2C1),
EditableCellWidget(cell: mocks.cellR2C2),
EditableCellWidget(cell: mocks.cellR2C3),
]
],
);
}
}