123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- // ignore_for_file: use_build_context_synchronously
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- import 'package:sis_flutter/models/actividad_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 '../../data/session/session_storage.dart';
- class HomeScreen extends StatefulWidget {
- static const String route = '/home';
- const HomeScreen({super.key});
- @override
- Formulario createState() => Formulario();
- }
- class Formulario extends State<HomeScreen> {
- @override
- void initState() {
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- backgroundColor: AppTheme.progressBackground,
- appBar: AppBar(
- backgroundColor: Colors.white,
- ),
- drawerScrimColor:
- const Color.fromARGB(255, 119, 119, 119).withOpacity(0.5),
- drawer: AppDrawer(),
- body: const SafeArea(child: HomeBody()),
- bottomNavigationBar: const CustomBottomNavigationBar(),
- );
- }
- }
- class HomeBody extends StatefulWidget {
- const HomeBody({
- super.key,
- });
- @override
- State<HomeBody> createState() => _HomeBodyState();
- }
- class _HomeBodyState extends State<HomeBody> {
- @override
- void initState() {
- super.initState();
- Future(
- () async {
- final idusuario =
- Provider.of<LoginViewModel>(context, listen: false).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;
- var usuario = Provider.of<LoginViewModel>(context, listen: false);
- final height = MediaQuery.of(context).size.height;
- return SingleChildScrollView(
- child: Column(
- children: [
- Container(
- padding: const EdgeInsets.all(10),
- decoration: const BoxDecoration(
- color: Colors.white,
- borderRadius:
- BorderRadius.vertical(bottom: Radius.circular(15))),
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- const Text("Bienvenido ",
- style: TextStyle(
- fontSize: 25,
- )),
- Text(usuario.name,
- style: const TextStyle(
- fontSize: 45,
- fontWeight: FontWeight.bold,
- height: -1)),
- const SizedBox(height: 10),
- Container(
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(10),
- color: const Color.fromARGB(141, 232, 234, 237),
- ),
- child: const TextField(
- decoration: InputDecoration(
- contentPadding: EdgeInsets.symmetric(vertical: 15),
- border: InputBorder.none,
- prefix: Icon(
- Icons.search,
- color: Colors.black87,
- ),
- hintText: "Busqueda por Usuarios",
- hintStyle:
- TextStyle(color: Colors.grey, fontSize: 15)),
- ),
- ),
- ]),
- ),
- ),
- const SizedBox(height: 10),
- SizedBox(
- width: double.infinity,
- 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, fontWeight: FontWeight.bold, color: Colors.black54),
- 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: const AlwaysStoppedAnimation(AppTheme.primary)),
- ),
- ),
- ],
- ),
- children: tareaWidgets,
- ),
- );
- }
- }
|