LukeFalcox / App-Freelancer

0 stars 0 forks source link

Cód - Tela Demonstração de trabalhos criados(Finalizado) #10

Closed Mduardar27 closed 3 months ago

Mduardar27 commented 3 months ago

``import 'package:flutter/material.dart';

void main() { runApp(MyApp()); }

class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'Cyber Freelancer', theme: ThemeData( primaryColor: Color(0xFF007BFF), // Azul Primário scaffoldBackgroundColor: Colors.white, // Fundo da Página primarySwatch: Colors.blue, textTheme: TextTheme( headlineLarge: TextStyle(color: Color(0xFF17A2B8), fontSize: 32, fontWeight: FontWeight.bold), headlineMedium: TextStyle(color: Color(0xFF17A2B8), fontSize: 28, fontWeight: FontWeight.bold), // Textos e Títulos ), elevatedButtonTheme: ElevatedButtonThemeData( style: ButtonStyle( backgroundColor: MaterialStateProperty.all(Colors.white), // Botões foregroundColor: MaterialStateProperty.all(Colors.black), // Texto do Botão ), ), textButtonTheme: TextButtonThemeData( style: ButtonStyle( foregroundColor: MaterialStateProperty.all(Colors.black), // Texto do Botão backgroundColor: MaterialStateProperty.all(Colors.white), // Fundo do Botão ), ), ), home: FreelancerDemoScreen(), ); } }

class FreelancerDemoScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( 'Projetos', style: TextStyle(color: Colors.white), // Título da App Bar ), backgroundColor: Color(0xFF0A6D92), // Fundo da App Bar centerTitle: true, // Centralizar título da App Bar ), body: Padding( padding: const EdgeInsets.all(16.0), child: ListView.builder( itemCount: demoProjects.length, itemBuilder: (context, index) { return Card( color: Colors.grey[200], // Fundo do Card child: Padding( padding: const EdgeInsets.all(8.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ Text( demoProjects[index].title, style: TextStyle(color: Colors.black, fontSize: 18), // Textos e Títulos ), Text( 'Prazo: ${demoProjects[index].deadline}', style: TextStyle(color: Colors.grey[600], fontSize: 14), // Cor do prazo ), Text( 'Valor Mínimo: ${demoProjects[index].minValue}', style: TextStyle(color: Colors.grey[600], fontSize: 14), // Cor do valor mínimo ), Text( 'Valor Máximo: ${demoProjects[index].maxValue}', style: TextStyle(color: Colors.grey[600], fontSize: 14), // Cor do valor máximo ), Text( 'Nome do Cliente: ${demoProjects[index].clientName}', style: TextStyle(color: Colors.grey[600], fontSize: 14), // Cor do nome do cliente ), SizedBox(height: 8.0), Center( child: ElevatedButton( onPressed: () { _showProjectDetailsDialog(context, demoProjects[index]); }, child: Text('Ver Detalhes'), ), ), ], ), ), ); }, ), ), ); }

void _showProjectDetailsDialog(BuildContext context, Project project) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( contentPadding: EdgeInsets.zero, content: Stack( children: [ Padding( padding: const EdgeInsets.all(16.0), child: Column( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 40), // Espaço para o botão Text( project.title, style: TextStyle( fontSize: 20.0, fontWeight: FontWeight.bold, color: Color(0xFF17A2B8), // Textos e Títulos ), ), SizedBox(height: 8.0), Text( 'Descrição: ${project.description}', style: TextStyle(color: Colors.grey[600]), // Cor da descrição ), ], ), ), Positioned( top: 0.0, right: 0.0, child: IconButton( icon: Icon(Icons.close), onPressed: () { Navigator.of(context).pop(); }, ), ), ], ), actions: [ Center( child: ElevatedButton( onPressed: () { _showProposalDialog(context); }, child: Text('Fazer Proposta'), ), ), ], ); }, ); }

void _showProposalDialog(BuildContext context) { showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text( 'Enviar Proposta', style: TextStyle(color: Colors.black), // Textos e Títulos ), content: Column( mainAxisSize: MainAxisSize.min,

      ),
      actions: [
        Center(
          child: ElevatedButton(
            style: ElevatedButton.styleFrom(
              backgroundColor: Colors.white, // Cor de fundo do botão
              foregroundColor: Colors.black, // Cor do texto do botão
            ),
            onPressed: () {
              // Enviar proposta
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(
                  content: Text('Proposta enviada com sucesso!'),
                ),
              );
              Navigator.of(context).pop();
            },
            child: Text('Enviar'),
          ),
        ),
        IconButton(
          icon: Icon(Icons.close),
          onPressed: () {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  },
);

} }

class Project { final String title; final String description; final String deadline; final double minValue; final double maxValue; final String clientName;

Project({ required this.title, required this.description, required this.deadline, required this.minValue, required this.maxValue, required this.clientName, }); }

List demoProjects = [ Project( title: 'Desenvolvimento de Site Institucional', description: 'Criação de um site responsivo para uma empresa de tecnologia.', deadline: '15 de junho de 2024', minValue: 1000.0, maxValue: 5000.0, clientName: 'Empresa ABC', ), Project( title: 'Design de Logo', description: 'Criação de um logotipo moderno para uma startup de alimentação saudável.', deadline: '30 de maio de 2024', minValue: 500.0, maxValue: 2000.0, clientName: 'Empresa XYZ', ), Project( title: 'Redação de Conteúdo', description: 'Produção de artigos para um blog de viagens.', deadline: '20 de julho de 2024', minValue: 300.0, maxValue: 1500.0, clientName: 'Empresa 123', ), ];