Data refreshing on new table creation

This commit is contained in:
Andrew 2023-04-11 02:56:51 +07:00
parent 4a5039cb19
commit 2c1ad486df
2 changed files with 34 additions and 19 deletions

View file

@ -16,6 +16,10 @@ enum PageType {
settings, settings,
} }
mixin HomePageStateRef {
void refreshData();
}
class HomePage extends StatefulWidget { class HomePage extends StatefulWidget {
const HomePage({super.key}); const HomePage({super.key});
@ -23,7 +27,7 @@ class HomePage extends StatefulWidget {
State<StatefulWidget> createState() => _HomePageState(); State<StatefulWidget> createState() => _HomePageState();
} }
class _HomePageState extends State<HomePage> { class _HomePageState extends State<HomePage> with HomePageStateRef {
final apiClient = Get.find<ApiClient>(); final apiClient = Get.find<ApiClient>();
TablesListModel tables = TablesListModel([]); TablesListModel tables = TablesListModel([]);
@ -34,7 +38,7 @@ class _HomePageState extends State<HomePage> {
void initState() { void initState() {
super.initState(); super.initState();
_refreshData(); refreshData();
} }
var currentPage = PageType.none; var currentPage = PageType.none;
@ -56,7 +60,7 @@ class _HomePageState extends State<HomePage> {
), ),
IconButton( IconButton(
icon: const Icon(Icons.refresh), icon: const Icon(Icons.refresh),
onPressed: _refreshData, onPressed: refreshData,
), ),
], ],
); );
@ -136,7 +140,7 @@ class _HomePageState extends State<HomePage> {
child: Builder(builder: (context) { child: Builder(builder: (context) {
switch (currentPage) { switch (currentPage) {
case PageType.tables: case PageType.tables:
return TablesListPanel(tables: tables); return TablesListPanel(parent: this, tables: tables);
case PageType.users: case PageType.users:
return const UsersListPanel(); return const UsersListPanel();
case PageType.settings: case PageType.settings:
@ -152,7 +156,8 @@ class _HomePageState extends State<HomePage> {
); );
} }
void _refreshData() { @override
void refreshData() {
apiClient.tablesList().then( apiClient.tablesList().then(
(value) => value.unfold( (value) => value.unfold(
(tables) { (tables) {

View file

@ -6,11 +6,17 @@ import 'package:tuuli_app/api/api_client.dart';
import 'package:tuuli_app/api/model/tables_list_model.dart'; import 'package:tuuli_app/api/model/tables_list_model.dart';
import 'package:tuuli_app/c.dart'; import 'package:tuuli_app/c.dart';
import 'package:tuuli_app/pages/bottomsheers/edit_table_bottomsheet.dart'; import 'package:tuuli_app/pages/bottomsheers/edit_table_bottomsheet.dart';
import 'package:tuuli_app/pages/home_page.dart';
class TablesListPanel extends StatefulWidget { class TablesListPanel extends StatefulWidget {
final TablesListModel tables; final TablesListModel tables;
final HomePageStateRef parent;
const TablesListPanel({super.key, required this.tables}); const TablesListPanel({
super.key,
required this.tables,
required this.parent,
});
@override @override
State<StatefulWidget> createState() => _TablesListPanelState(); State<StatefulWidget> createState() => _TablesListPanelState();
@ -157,20 +163,24 @@ class _TablesListPanelState extends State<TablesListPanel> {
await apiClient await apiClient
.createTable(result.tableName, result.fields) .createTable(result.tableName, result.fields)
.then((e) => e.unfold((_) { .then((e) => WidgetsBinding.instance.addPostFrameCallback((_) {
Get.snackbar( e.unfold((_) {
"Success", Get.snackbar(
"Table created", "Success",
colorText: Colors.white, "Table created",
); colorText: Colors.white,
}, (error) { );
Get.defaultDialog( }, (error) {
title: "Error", Get.defaultDialog(
middleText: error.toString(), title: "Error",
textConfirm: "OK", middleText: error.toString(),
onConfirm: () => Get.back(), textConfirm: "OK",
); onConfirm: () => Get.back(),
);
});
})); }));
widget.parent.refreshData();
} }
void _openTable(TableModel table) async { void _openTable(TableModel table) async {