123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- import 'package:sis_flutter/models/actividad_model.dart';
- import 'package:sis_flutter/models/tarea_model.dart';
- import 'package:sis_flutter/themes/themes.dart';
- import 'package:sis_flutter/viewmodels/login_view_model.dart';
- import 'package:sis_flutter/viewmodels/tarea_view_model.dart';
- import 'package:sis_flutter/widgets/app_drawer.dart';
- import 'package:sis_flutter/widgets/custom_bottom_navigation_bar.dart';
- import 'package:sis_flutter/widgets/widgets_components.dart';
- class HomeScreen extends StatefulWidget {
- static const String route = '/home';
- const HomeScreen({super.key});
- @override
- Formulario createState() => Formulario();
- }
- class Formulario extends State<HomeScreen> {
- DateTime? fechaInicio = DateTime.now();
- DateTime? fechaFin;
- ScrollController horizontalScrollController = ScrollController();
- ScrollController verticalScrollController = ScrollController();
- @override
- void initState() {
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- backgroundColor: Colors.grey.shade200,
- drawer: AppDrawer(),
- appBar: encabezado(
- estilo: TextStyle(
- color: Colors.white,
- fontSize: 20,
- fontWeight: FontWeight.bold,
- ),
- backgroundColor: AppTheme.divider,
- acciones: [
- IconButton(
- onPressed: () {}, icon: const Icon(Icons.restart_alt_rounded)),
- ],
- titulo: "Actividades",
- ),
- body: const Bodytest(),
- bottomNavigationBar: const CustomBottomNavigationBar(),
- );
- }
- }
- class Bodytest extends StatefulWidget {
- const Bodytest({
- super.key,
- });
- @override
- State<Bodytest> createState() => _BodytestState();
- }
- class _BodytestState extends State<Bodytest> {
- @override
- void initState() {
- super.initState();
- Future(
- () async {
- final idusuario =
- Provider.of<LoginViewModel>(context, listen: false).idUsuario;
- // Provider.of<PrioridadesViewMode>(context, listen: false)
- // .fetchPriodidades(idusuario);
- Provider.of<PrioridadesViewMode>(context, listen: false)
- .fetchActividad(idusuario);
- },
- );
- }
- @override
- void dispose() {
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- var vm = Provider.of<PrioridadesViewMode>(context);
- // var prioridades = vm.prioridades;
- var actividadDetalle = vm.actividadList;
- final height = MediaQuery.of(context).size.height;
- final width = MediaQuery.of(context).size.width;
- return SingleChildScrollView(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Container(
- height: height * 0.9,
- child: ListView.builder(
- itemCount: actividadDetalle.length,
- itemBuilder: (context, index) {
- var actividad = actividadDetalle[index];
- return _infoCard(actividad);
- }),
- ),
- ],
- ),
- );
- }
- Card _infoCard(Actividad actividad) {
- List<Widget> tareaWidgets = [];
- for (var tarea in actividad.tareas!) {
- final posicion = (actividad.tareas!.indexOf(tarea) + 1).toString();
- tareaWidgets.add(
- ListTile(
- title: Text(tarea.contenido!),
- subtitle: Text("Subtarea $posicion"),
- ),
- );
- }
- return Card(
- margin: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 8),
- elevation: 4,
- shape: BeveledRectangleBorder(borderRadius: BorderRadius.circular(6.0)),
- child: ExpansionTile(
- backgroundColor: Colors.white24,
- leading: const Icon(Icons.local_fire_department_rounded),
- title: Text(
- "${actividad.nombreProyecto!} - ${actividad.nombre!} ",
- style: const TextStyle(fontSize: 20),
- strutStyle: const StrutStyle(fontWeight: FontWeight.bold),
- ),
- trailing: const Icon(Icons.arrow_drop_down),
- subtitle: Row(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Text(actividad.avance!),
- const SizedBox(width: 10),
- Expanded(
- child: ClipRRect(
- borderRadius: const BorderRadius.all(Radius.circular(10)),
- child: LinearProgressIndicator(
- value: double.parse(actividad.avance!) / 100,
- backgroundColor: Colors.grey,
- valueColor: AlwaysStoppedAnimation<Color>(
- _calcularColorPorcentaje(actividad.avance!),
- ),
- ),
- ),
- ),
- ],
- ),
- children: tareaWidgets,
- ),
- );
- }
- }
- Color _calcularColorPorcentaje(String avance) {
- final porcentaje = double.parse(avance);
- if (porcentaje > 66) return Colors.green;
- if (porcentaje > 33) return Colors.orange;
- return Colors.red;
- }
|