workouttest_app/lib/view/mydevelopment_body_page.dart
2021-09-05 07:47:15 +02:00

145 lines
4.9 KiB
Dart

import 'dart:async';
import 'dart:collection';
import 'package:aitrainer_app/library/radar_chart.dart';
import 'package:aitrainer_app/widgets/app_bar.dart';
import 'package:aitrainer_app/widgets/bottom_nav.dart';
import 'package:aitrainer_app/widgets/dialog_premium.dart';
import 'package:flutter/scheduler.dart';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/util/common.dart';
import 'package:aitrainer_app/util/trans.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:aitrainer_app/bloc/body_development/body_development_bloc.dart';
import 'package:modal_progress_hud_nsn/modal_progress_hud_nsn.dart';
class MyDevelopmentBodyPage extends StatefulWidget {
@override
_MyDevelopmentBodyPage createState() => _MyDevelopmentBodyPage();
}
class _MyDevelopmentBodyPage extends State<MyDevelopmentBodyPage> with Trans, Common {
bool isStart = false;
// ignore: close_sinks
late BodyDevelopmentBloc bloc;
@override
void initState() {
super.initState();
if (!Cache().hasPurchased || true) {
Timer(
Duration(milliseconds: 2000),
() => {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
setContext(context);
return DialogPremium(
unlocked: Cache().hasPurchased,
unlockRound: 4,
function: "My Whole Body Development",
unlockedText: null,
onTap: () => {Navigator.of(context).pop(), Navigator.of(context).pop()},
onCancel: () => {Navigator.of(context).pop(), Navigator.of(context).pop()},
);
})
});
}
/// We require the initializers to run after the loading screen is rendered
SchedulerBinding.instance!.addPostFrameCallback((_) {
BlocProvider.of<BodyDevelopmentBloc>(context).add(BodyDevelopmentLoad());
});
}
@override
Widget build(BuildContext context) {
bloc = BlocProvider.of<BodyDevelopmentBloc>(context);
LinkedHashMap arguments = ModalRoute.of(context)!.settings.arguments as LinkedHashMap;
final int customerId = arguments['customerId'];
setContext(context);
return Scaffold(
appBar: AppBarNav(depth: 1),
body: Container(
padding: EdgeInsets.all(20),
decoration: BoxDecoration(
image: DecorationImage(
image: customerId == Cache().userLoggedIn!.customerId
? AssetImage('asset/image/WT_light_background.jpg')
: AssetImage('asset/image/WT_menu_dark.jpg'),
fit: BoxFit.cover,
alignment: Alignment.center,
),
),
child: BlocConsumer<BodyDevelopmentBloc, BodyDevelopmentState>(
listener: (context, state) {},
builder: (context, state) {
if (state is BodyDevelopmentInitial) {
return Container();
} else {
return ModalProgressHUD(
child: developmentWidget(customerId),
inAsyncCall: state is BodyDevelopmentLoading,
opacity: 0.5,
color: Colors.black54,
progressIndicator: CircularProgressIndicator(),
);
}
},
)),
bottomNavigationBar: BottomNavigator(bottomNavIndex: 1),
);
}
Widget developmentWidget(int customerId) {
return Column(children: [
explanationWidget(),
Expanded(
child: exerciseWidget(customerId),
),
]);
}
Widget exerciseWidget(int customerId) {
return RadarChart.light(
ticks: bloc.radarTicks,
features: bloc.radarFeatures,
data: bloc.radarData,
);
}
Widget explanationWidget() {
return Card(
color: Colors.white60,
child: Container(
padding: EdgeInsets.only(left: 10, right: 5, top: 12, bottom: 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Row(
children: [
Icon(
Icons.info,
color: Colors.orangeAccent,
),
Text(" "),
Text(
t("My Body Development"),
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
],
),
Divider(
color: Colors.transparent,
),
Text(
t("You see here your whole body development by muscle groups."),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.normal),
),
],
)));
}
}