class Project {
final String title;
final String description;
final String deadline;
final double minValue;
final double maxValue;
final String 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',
),
];
``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,
} }
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',
),
];