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,
}
mixin HomePageStateRef {
void refreshData();
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@ -23,7 +27,7 @@ class HomePage extends StatefulWidget {
State<StatefulWidget> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
class _HomePageState extends State<HomePage> with HomePageStateRef {
final apiClient = Get.find<ApiClient>();
TablesListModel tables = TablesListModel([]);
@ -34,7 +38,7 @@ class _HomePageState extends State<HomePage> {
void initState() {
super.initState();
_refreshData();
refreshData();
}
var currentPage = PageType.none;
@ -56,7 +60,7 @@ class _HomePageState extends State<HomePage> {
),
IconButton(
icon: const Icon(Icons.refresh),
onPressed: _refreshData,
onPressed: refreshData,
),
],
);
@ -136,7 +140,7 @@ class _HomePageState extends State<HomePage> {
child: Builder(builder: (context) {
switch (currentPage) {
case PageType.tables:
return TablesListPanel(tables: tables);
return TablesListPanel(parent: this, tables: tables);
case PageType.users:
return const UsersListPanel();
case PageType.settings:
@ -152,7 +156,8 @@ class _HomePageState extends State<HomePage> {
);
}
void _refreshData() {
@override
void refreshData() {
apiClient.tablesList().then(
(value) => value.unfold(
(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/c.dart';
import 'package:tuuli_app/pages/bottomsheers/edit_table_bottomsheet.dart';
import 'package:tuuli_app/pages/home_page.dart';
class TablesListPanel extends StatefulWidget {
final TablesListModel tables;
final HomePageStateRef parent;
const TablesListPanel({super.key, required this.tables});
const TablesListPanel({
super.key,
required this.tables,
required this.parent,
});
@override
State<StatefulWidget> createState() => _TablesListPanelState();
@ -157,7 +163,8 @@ class _TablesListPanelState extends State<TablesListPanel> {
await apiClient
.createTable(result.tableName, result.fields)
.then((e) => e.unfold((_) {
.then((e) => WidgetsBinding.instance.addPostFrameCallback((_) {
e.unfold((_) {
Get.snackbar(
"Success",
"Table created",
@ -170,7 +177,10 @@ class _TablesListPanelState extends State<TablesListPanel> {
textConfirm: "OK",
onConfirm: () => Get.back(),
);
});
}));
widget.parent.refreshData();
}
void _openTable(TableModel table) async {