The flutter_resume_template
plugin provides a customizable resume template that can be easily integrated into a Flutter application. This plugin provides a FlutterResumeTemplate
widget that takes the parameters, TemplateMode
, TemplateTheme
, onSaveResume
, TemplateData
and onEmpty()
, to customize the template according to your needs.
- Customizable resume template with multiple styles.
- Ability to add or remove buttons based on user needs.
- Easy to integrate and customize with the existing Flutter application.
Feature | Description |
---|---|
Drag and Drop | Allows users to drag and drop widgets to reposition them within the layout. |
Zoom | Enables users to zoom in or out of the layout to see more or less of the widgets. |
Widget Shake | When editing mode is selected, widgets on the canvas will shake to indicate that they can be moved or modified. |
You can modify the table format and content to fit your specific needs, but this should give you a good starting point.
To use this plugin, add flutter_resume_template
as a dependency in your project's pubspec.yaml
file:
dependencies:
flutter_resume_template: <latest.version>
Then, run the following command to install the dependencies:
$ flutter packages get
To use FlutterResumeTemplate
widget, simply import the flutter_resume_template
package and
create a new instance of the widget, providing the required parameters.
create a dart file called data.dart
const String workExperienceCompany1 = '''
Responsibilities:
- Developed and maintained RESTful APIs using Node.js and Express.js for our web applications.
- Collaborated with the frontend team to integrate GraphQL APIs into our applications.
- Utilized Docker for containerization and Kubernetes for orchestration of microservices.
- Implemented user authentication and authorization using JWT tokens and OAuth2.
Technologies Used:
- Node.js, Express.js, GraphQL, RESTful APIs
- Docker, Kubernetes, JWT, OAuth2
- PostgreSQL, MongoDB
- Git, JIRA
Achievements:
- Successfully reduced API response times by 30% by optimizing database queries.
- Led a team of developers in delivering critical features on time.
''';
const String workExperienceCompany2 = '''
Responsibilities:
- Developed scalable microservices using Java and Spring Boot for our cloud-based applications.
- Integrated Elasticsearch and Kibana for real-time log monitoring and analysis.
- Implemented message queuing systems using Apache Kafka for event-driven architecture.
- Collaborated with the QA team to ensure high code quality and performance.
Technologies Used:
- Java, Spring Boot, RESTful APIs
- Elasticsearch, Kibana, Apache Kafka
- AWS (Amazon Web Services)
- Git, Jenkins
Achievements:
- Improved application performance by optimizing database queries and reducing response times.
- Implemented automated deployment pipelines, resulting in a 50% reduction in release time.
''';
const String workExperienceCompany3 = '''
Responsibilities:
- Designed and developed responsive web applications using React.js and Redux.
- Implemented serverless architecture using AWS Lambda and API Gateway for cost-effective solutions.
- Integrated third-party APIs and payment gateways for e-commerce applications.
- Conducted code reviews and mentored junior developers in best practices.
Technologies Used:
- React.js, Redux, GraphQL
- AWS Lambda, API Gateway
- MySQL, MongoDB
- Git, Bitbucket
Achievements:
- Successfully launched three web applications, increasing customer engagement by 25%.
- Implemented a GraphQL API, reducing the number of network requests and improving frontend performance.
''';
const String bio = '''
I am a dedicated Flutter developer with four years of valuable experience in both front-end and back-end development.
My expertise lies in crafting robust and user-friendly applications using the Flutter framework.
Having worked on projects of all sizes, I possess a deep understanding of the development
lifecycle and a proven ability to deliver high-quality solutions.
Currently based in the vibrant city of Berlin, Germany, I enjoy being a part of its thriving tech community.
As a Computer Engineering graduate, I bring a solid foundation of technical knowledge and problem-solving
skills to every project I undertake.
Throughout my career, I have consistently demonstrated a passion for creating innovative and efficient applications
that provide an exceptional user experience. My proficiency in Flutter enables me to build cross-platform
applications with beautiful interfaces, seamless functionality, and optimized performance.
I thrive in collaborative environments and enjoy working closely with cross-functional teams to bring ideas to life.
I am always eager to stay up-to-date with the latest industry trends and technologies, continuously honing
my skills to deliver cutting-edge solutions.
''';
TemplateData data = TemplateData(
fullName: 'Alicia Smith',
currentPosition: 'Flutter Developer',
street: 'Curvy Str. 53',
address: 'Berlin, 14568',
country: 'Germany',
email: '[email protected]',
phoneNumber: '+ 49 (106)341 753 12',
bio: bio,
experience: [
ExperienceData(
experienceTitle: 'Software Engineer',
experienceLocation: 'at Mindable Health',
experiencePeriod: 'Aug 2021 - Dec 2023',
experiencePlace: 'Berlin',
experienceDescription: workExperienceCompany1,
),
ExperienceData(
experienceTitle: 'Product Design',
experienceLocation: 'Uk . London',
experiencePeriod: 'Aug 2021 - Dec 2023',
experiencePlace: 'London',
experienceDescription: workExperienceCompany2,
),
ExperienceData(
experienceTitle: 'Flutter Developer',
experienceLocation: 'Uk . London',
experiencePeriod: 'Aug 2021 - Dec 2023',
experiencePlace: 'London',
experienceDescription: workExperienceCompany3,
),
],
educationDetails: [
Education('Bachelor Degree', 'Oxford University'),
Education('Post Graduate Degree', 'Oxford University'),
],
languages: [
Language('English', 5),
Language('French', 4),
Language('Spanish', 3),
Language('Mandarin', 2),
Language('Russian', 1),
],
hobbies: [
'Bungee jumping',
'Fitness Studio',
'Martial Art',
'Vintage Art Collection'
],
image:
'https://images.pexels.com/photos/3768911/pexels-photo-3768911.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1',
backgroundImage:
'https://images.pexels.com/photos/3768911/pexels-photo-3768911.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1');
Then import data.dart and use :
import 'package:flutter/material.dart';
import 'package:flutter_resume_template/flutter_resume_template.dart';
class MyResumePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Resume'),
),
body: FlutterResumeTemplate(
data: data,
templateTheme: TemplateTheme.modern,
mode: TemplateMode.shakeEditAndSaveMode,
onSaveResume: (globalKey) async =>
await PdfHandler().createResume(globalKey),
),
);
}
}
// To create your own template set the [TemplateTheme.none]
FlutterResumeTemplate(
data: data,
templateTheme: TemplateTheme.none,
onEmpty: () => YourCustomTemplate(), //just make sure you pass the data to your widget
// To add your own template style [background color etc...],
// You should define and pass your own ThemeData.
templateTheme: TemplateTheme(
TemplateType.modernResume, // set the template mode that you would like to customise
ThemeData(
primaryColor: Colors.red
//...
),
),
Parameter | Description |
---|---|
mode (required) |
Determines the different states of the Template: [TemplateMode.onlyEditableMode] , [TemplateMode.shakeEditAndSaveMode] , [TemplateMode.readOnlyMode] |
TemplateTheme (required) |
A string value that determines the template style. Available styles are business , technical , modern , and classic . |
data (optional) |
An Object that receives all the props of the resume such as experience, address, name, current position, etc., and will be displayed on the Resume |
onEmpty (optional) |
A callback function that allows the user to render their own template |
onSaveResume (optional) |
A callback function that will save a PDF version of the resume in the local download path |
maxLinesExperience (optional) |
Maximum lines the experience widget should take |
showButtons (optional) |
Decide whether to show or hide the animate and download button only in [shakeAndEditButton] mode |
height (optional) |
The entire widget height |
width (optional) |
The entire widget width |
backgroundColor (optional) |
The entire widget background color |
backgroundColorLeftSection (optional) |
Changes the background color of the left section of the Resume template when the mode is Modern |
enableDivider (optional) |
Enable or disable all the dividers in several sections. Note that not all templates have SHDivider |
imageBoxFit (optional) |
Renders the image fit by its parent widget |
imageRadius (optional) |
Renders the image radius by its parent widget |
imageHeight (optional) |
Renders the image height by its parent widget |
imageWidth (optional) |
Renders the image width by its parent widget |
aboutMePlaceholder (optional) |
Renders the aboutMePlaceholder |
languagePlaceHolder (optional) |
Renders the languagePlaceHolder |
experiencePlaceHolder (optional) |
Renders the experiencePlaceHolder |
telPlaceHolder (optional) |
Renders the telPlaceHolder |
emailPlaceHolder (optional) |
Renders the emailPlaceHolder |
hobbiesPlaceholder (optional) |
Renders the hobbiesPlaceholder |
educationPlaceHolder (optional) |
Renders the educationPlaceHolder |
Check out the example directory for a sample application that uses the FlutterResumeTemplate
widget.
Contributions to this plugin are welcome. Please create issues and pull requests on the GitHub repository.
- CI/CD for Flutter Release: This workflow builds and tests the app for release, and publishes it to the App Store and Google Play.
- Flutter CI: This workflow runs tests on the app for each commit and pull request.
- Publish Flutter Plugin: This workflow publishes the template as a Flutter plugin to the pub.dev package repository.
This plugin is released under the MIT License. See the LICENSE.txt file for more details.