manager-app/lib/Screens/Main/main_screen.dart
2025-08-14 23:24:18 +02:00

89 lines
3.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:manager_api_new/api.dart';
import 'package:manager_app/Components/common_loader.dart';
import 'package:manager_app/Models/managerContext.dart';
import 'package:manager_app/Models/menu.dart';
import 'package:manager_app/Models/menuSection.dart';
import 'package:manager_app/Screens/Main/components/body.dart';
import 'package:manager_app/app_context.dart';
import 'package:manager_app/client.dart';
import 'package:manager_app/constants.dart';
import 'package:manager_app/main.dart';
import 'package:provider/provider.dart';
import 'package:responsive_framework/responsive_framework.dart';
class MainScreen extends StatefulWidget {
MainScreen({Key? key}) : super(key: key);
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
@override
Widget build(BuildContext context) {
final GlobalKey<_MainScreenState> key = GlobalKey();
final appContext = Provider.of<AppContext>(context);
Size size = MediaQuery.of(context).size;
//var isFortSt = managerAppContext.instanceId == "633ee379d9405f32f166f047";
return FutureBuilder(
future: getInstanceInfo(appContext),
builder: (context, AsyncSnapshot<InstanceDTO?> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data != null) {
var instanceDTO = snapshot.data;
return Scaffold(
key: key,
body: Body(instance: instanceDTO!),
);
} else {
return Text("No data");
}
} else if (snapshot.connectionState == ConnectionState.none) {
return Text("No data");
} else {
return Center(
child: Container(
height: size.height * 0.1,
child: CommonLoader()
)
);
}
}
);
}
Future<InstanceDTO?> getInstanceInfo(AppContext appContext) async {
var session = await loadJsonSessionFile();
try {
ManagerAppContext managerAppContext = appContext.getContext() as ManagerAppContext;
managerAppContext.instanceId = managerAppContext.instanceId ?? session.instanceId;
managerAppContext.host = managerAppContext.host ?? session.host;
managerAppContext.accessToken = managerAppContext.accessToken ?? session.token;
managerAppContext.email = managerAppContext.email ?? session.email;
if(managerAppContext.clientAPI == null) {
managerAppContext.clientAPI = Client(session.host!);
managerAppContext.clientAPI!.apiApi!.addDefaultHeader('authorization', 'Bearer '+ managerAppContext.accessToken!);
}
InstanceDTO? instance = await managerAppContext.clientAPI!.instanceApi!.instanceGetDetail(managerAppContext.instanceId!);
managerAppContext.instanceDTO = instance;
return instance;
} catch(e) {
Navigator.pushNamedAndRemoveUntil(
context,
'/login',
(Route<dynamic> route) => false,
);
return null;
}
}
}