You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
6.6 KiB
Dart
150 lines
6.6 KiB
Dart
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
|
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
|
|
import 'package:diplomaticquarterapp/core/viewModels/weather/weather_view_model.dart';
|
|
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
|
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
|
import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
|
|
import 'package:diplomaticquarterapp/uitl/location_util.dart';
|
|
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
|
import 'package:diplomaticquarterapp/uitl/utils_new.dart';
|
|
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
|
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
|
|
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
|
|
import 'package:diplomaticquarterapp/widgets/weather_slider/weather_slider.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class HealthWeatherIndicator extends StatefulWidget {
|
|
@override
|
|
_HospitalsPageState createState() => _HospitalsPageState();
|
|
}
|
|
|
|
class _HospitalsPageState extends State<HealthWeatherIndicator> {
|
|
var data;
|
|
AppSharedPreferences sharedPref = AppSharedPreferences();
|
|
LocationUtils locationUtils;
|
|
var weather = '--';
|
|
|
|
ProjectViewModel projectViewModel;
|
|
|
|
@override
|
|
void initState() {
|
|
locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context);
|
|
WidgetsBinding.instance.addPostFrameCallback((_) => locationUtils.getCurrentLocation());
|
|
getWeather();
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
projectViewModel = Provider.of(context);
|
|
return BaseView<WeatherViewModel>(
|
|
onModelReady: (model) => model.getWeatherData(),
|
|
allowAny: true,
|
|
builder: (_, mode, widget) => AppScaffold(
|
|
isShowDecPage: false,
|
|
showNewAppBar: true,
|
|
showNewAppBarTitle: true,
|
|
appBarTitle: TranslationBase.of(context).healthWeatherIndicators,
|
|
isShowAppBar: true,
|
|
body: mode.weatherIndicatorData.length > 0
|
|
? SingleChildScrollView(
|
|
child: Column(children: [
|
|
Container(
|
|
width: double.infinity,
|
|
decoration: containerRadiusWithGradient(0,
|
|
color1: timeCalculator(6, 0, 10, 59)
|
|
? Color(0xFFB3E3FE)
|
|
: timeCalculator(11, 0, 15, 59)
|
|
? Color(0xFFFF9E7E)
|
|
: Color(0xFF2E6686),
|
|
color2: timeCalculator(6, 0, 10, 59)
|
|
? Color(0xFF9AC7FF)
|
|
: timeCalculator(11, 0, 15, 59)
|
|
? Color(0xFFFECB50)
|
|
: Color(0xFF122F48)),
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(20.0),
|
|
child: Row(
|
|
children: [
|
|
Expanded(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Directionality(
|
|
textDirection: TextDirection.ltr,
|
|
child: Text(
|
|
weather,
|
|
style: TextStyle(
|
|
fontSize: 24,
|
|
letterSpacing: -0.83,
|
|
fontWeight: FontWeight.bold,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
),
|
|
Text(
|
|
DateUtil.getMonthDayYearDateFormatted(new DateTime.now()),
|
|
style: TextStyle(
|
|
fontSize: 12,
|
|
letterSpacing: -0.60,
|
|
fontWeight: FontWeight.w600,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
Text(
|
|
TranslationBase.of(context).healthWeatherIndicators,
|
|
style: TextStyle(
|
|
fontSize: 12,
|
|
letterSpacing: -0.96,
|
|
fontWeight: FontWeight.bold,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
Text(
|
|
TranslationBase.of(context).healthTipsBasedOnCurrentWeather,
|
|
style: TextStyle(
|
|
fontSize: 10,
|
|
letterSpacing: -0.72,
|
|
fontWeight: FontWeight.w600,
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
SvgPicture.asset(
|
|
"assets/images/new/cloudy.svg",
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
Padding(
|
|
padding: EdgeInsets.all(15),
|
|
child: AppText(
|
|
projectViewModel.isArabic ? mode.weatherIndicatorData[0].cityNameN : mode.weatherIndicatorData[0].cityName,
|
|
fontSize: 24,
|
|
fontWeight: FontWeight.bold,
|
|
)),
|
|
Padding(
|
|
padding: EdgeInsets.all(15),
|
|
child: Column(
|
|
children: mode.weatherIndicatorData.map((data) {
|
|
return WeatherSlider(data, projectViewModel);
|
|
}).toList()))
|
|
]))
|
|
: Center(child: AppCircularProgressIndicator())),
|
|
);
|
|
}
|
|
|
|
getWeather() async {
|
|
var data = await this.sharedPref.getObject(WEATHER);
|
|
setState(() {
|
|
weather = data['Temperature'].toString() + '\u2103' ?? '--';
|
|
});
|
|
}
|
|
}
|