ferraridamiano / converternow Goto Github PK
View Code? Open in Web Editor NEWThe Unit Converter app: easy, immediate and multi-platform
Home Page: https://converter-now.web.app
License: GNU General Public License v3.0
The Unit Converter app: easy, immediate and multi-platform
Home Page: https://converter-now.web.app
License: GNU General Public License v3.0
At the moment you can change the theme of the app just if you change the theme on the phone (just android 9/10 and above). We need to implement a switch to setup the theme between light, dark and system so also with android 9/10 and below can change the theme of the app.
Few days ago the flutter team has announced that flutter for Windows has reached the alpha stage. All the packages that we use are Windows compatible. I tried to compile for windows and it works pretty good. We should add the support for Windows.
The app should download the currencies rates just if what already has is older than a day. The problem is that the api we use returns a date that is referred to some time zone that may not be the same of the time zone of the user. And what is saved is the http response, when the app is opened the second time in that day checks the latest http response and compare with the date of the user, so it launches a new http request even if the rates are already updated.
Here's the problem:
(I commented just the incriminated lines)
_getCurrency() async {
String now = DateFormat("yyyy-MM-dd").format(DateTime.now());
String dataFetched=prefs.getString("currencyRates"); //here we get the saved currency
if(dataFetched==null || CurrencyJSONObject.fromJson(json.decode(dataFetched)).date!=now){ //it compares the date saved with the current date of the user
try{
final response =await http.get('https://api.exchangeratesapi.io/latest?symbols=USD,GBP,INR,CNY,JPY,CHF,SEK,RUB,CAD,KRW,BRL,HKD,AUD,NZD,MXN,SGD,NOK,TRY,ZAR,DKK,PLN,THB,MYR,HUF,CZK,ILS,IDR,PHP,RON');
if (response.statusCode == 200) {
CurrencyJSONObject currencyObject = new CurrencyJSONObject.fromJson(json.decode(response.body));
currencyValues=currencyObject.rates;
lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');
prefs.setString("currencyRates", response.body); //we save the currency rates with a date that can be different from the date of the user due to different time zones
}
else
_leggiCurrenciesSalvate();
}catch(e){
print(e);
_leggiCurrenciesSalvate();
}
}
else{
_leggiCurrenciesSalvate();
lastUpdateCurrency=MyLocalizations.of(context).trans('ultimo_update_valute')+MyLocalizations.of(context).trans('oggi');
}
setState(() {
isCurrencyLoading=false;
});
}
Ukrainian hryvnia ₴
We should separate more the logic of the app from the UI. Provider package is here to help.
We should also remove ConversionManager.dart because we could do everything inside ConversionPage.dart
As requested by someone we should add other units:
If you need others, write them below
If you want to contribute to this project translating the app you are welcome!
Here you can find the updated instructions on how you can add a new language (or improve an existing one).
Here is the current status of the translations:
Language | App translation | Store page translation | Credits |
---|---|---|---|
Arabic | ✔️ | ✔️ | @omer358 |
Catalan | ✔️ | ❌ | @pereorga |
Chinese | ✔️ | ✔️ | @syu-pf-ssy @MajoranaOedipus |
Chinese (traditional) | ✔️ | ✔️ | @plum7x @MajoranaOedipus |
Croatian | ✔️ | ✔️ | @milotype |
Dutch | ✔️ | ✔️ | @David-git-code |
English | ✔️ | ✔️ | @ferraridamiano |
French | ✔️ | ✔️ | @Torok42 |
German | ✔️ | ✔️ | @u2code |
Indonesian | ✔️ | ✔️ | @the7thNightmare |
Italian | ✔️ | ✔️ | @ferraridamiano |
Japanese | ✔️ | ✔️ | 匿名, @syu-pf-ssy |
Norwegian | ✔️ | ❌ | @FTno |
Polish | ✔️ | ✔️ | @rehork |
Portuguese | ✔️ | ✔️ | @mezysinc |
Russian | ✔️ | ✔️ | @vadimyoungg @Atrafon |
Spanish | ✔️ | ✔️ | @n-berenice |
Turkish | ✔️ | ✔️ | @muhaaliss |
Thanks in advance! 💚
Hi @ferraridamiano again
I would like to also propose to add a Financial tools to make the app more useful like the following:
- Unite Price: to calculate the price of a unity product from the Price and quantity
- Sales Tax: taking as input the price, tax, and a method (add or substract) and give the output: Final price, and tax amount
- Tip: taking as input the Bill, People, and the Tip (15% default) and give the output: Final Bill, Cost per Person and Tip amount
- Loan: taking as input the Loan, Rate(per Yr%), and the Period(in Years or Months) and give the output: Monthly Pay, Total Pay and Interest
- Interest: Simple and compound interest.
If this could be implemented It would be very helpful and very cool!
Best Regards
The routes in the app are currently not well managed. We should evaluate to use some package such as go_router
Hi @ferraridamiano and thanks for this wonderful project!
It would be very cool if you could add cooking units to the converter 👍
https://en.wikibooks.org/wiki/Cookbook:Units_of_measurement
And also a Ring size converter :
https://www.brilliance.com/ring-size-conversion-chart
Again thanks a lot for this wonderful app and please keep up the good work !!!
Im seeing an error I have had with a couple of Snap Games, but not yet with an app.
I installed 2.6.0 latest/stable from Ubuntu Software. Launching the app has it appear in the dock for a moment, then quit.
si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters)
caught my eye as it is what i have seen with a couple of Snap Games that won't run (quit on launch), when I install the hirsute-universe version they run fine. In this case that is not an option.
Ubuntu 21.04, Lenovo Thinkbook 14 G2 AMD.
journalctl -r
7月 22 16:18:50 Sulaco converternow[11672]: The program 'converternow' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc'.
(Details: serial 380 error_code 11 request_code 149 (unknown) minor_code 2)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the GDK_SYNCHRONIZE environment
variable to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
7月 22 16:18:50 Sulaco audit[11672]: AVC apparmor="DENIED" operation="open" profile="snap.converternow.converternow" name="/proc/sys/vm/max_map_count" pid=11672 comm="converternow" requested_mask>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:89): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:88): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:87): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:86): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:85): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:84): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:83): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:82): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:81): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco kernel: audit: type=1326 audit(1626938330.389:80): auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/convertern>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: si_init_perfcounters: max_sh_per_se = 2 not supported (inaccurate performance counters)
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco audit[11672]: SECCOMP auid=1000 uid=1000 gid=1000 ses=2 subj=snap.converternow.converternow pid=11672 comm="converternow" exe="/snap/converternow/16/bin/converternow" sig=0>
7月 22 16:18:50 Sulaco converternow_converternow.desktop[11672]: /usr/share/libdrm/amdgpu.ids: No such file or directory
7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:4055:23: 'font-feature-settings' is not a valid property name
7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:3593:25: 'font-feature-settings' is not a valid property name
7月 22 16:18:50 Sulaco converternow[11672]: Theme parsing error: gtk.css:1555:23: 'font-feature-settings' is not a valid property name
7月 22 16:18:50 Sulaco converternow[11672]: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-jL5mJj0Bis: No such file or directory
7月 22 16:18:50 Sulaco systemd[909]: app-gnome-converternow_converternow-11672.scope: Succeeded.
7月 22 16:18:50 Sulaco systemd[909]: Started snap.converternow.converternow.07dbccb0-0d9d-4e79-a047-c427d614bfe7.scope.
7月 22 16:18:50 Sulaco systemd[909]: Started Application launched by gnome-shell.
Ciao,
Greetings from Italy.
Thanks for this unit converter, until today I had to use shady apps filled with ads.
There's a calculation I do a lot and I think would fit nice the app: data transfer calculator.
E.g: How much time does it take to transfer 2.5 GB at 3.8 MB/s?
It should allow the user to pick whatever unit combination desires.
I use this one but is ugly and not mobile friendly
Thanks!
flutter app_localizations package issue
The exchange rate api service that we are currently using is no longer free, in fact the current app version is stuck to old values. We should migrate to the free service of the ECB.
I started building this app with the idea to learn dart and flutter. So I made a lot of mistakes, I tried to workaround them with the idea that if it works it's a good thing. But as the app grows in size and complexity it becomes more and more important to structure it well. So from now I will start to do some things:
Please add this app to the debian and arch repositories so many distros can download the app without having to use snaps or flatpaks.
I forgot the signature file that doesn't build if you don't have the file.
Currently we are using a custom ReorderableList. We should use the standard ReorderableListView.
The ReorderPage should also be optimized for large screens
Hi @ferraridamiano,
Please consider adding a true black theme to the app as the current theme is not bad but a true black theme would be better!
Thanks
I took the code that compute the conversion of this app and put it in a library so everyone can build it's own unit converter or do whatever he/she want. Now I want to remove these block of code from this repo and use the library.
You can view the library here.
We should improve the calculator:
We need to add continuous delivery, so:
We don't need to deploy the updated website every time, just push the commit
We don't need to manually upload the apk files as release on github
At the moment the layout with a small screen and with a big screen is not so different. The idea is to remove the bottom appbar with big screens and integrate everything in the FAB. In this way there will not be a large bottom app bar on the desktop app
HERE a spoiler
It is not convenient to click with the mouse if you are on desktop. We should accept the numbers from the keyboard
virgin install from Ubuntu Software..... Click to open app.....Opens.... Hit Maximise... Full system lock up... Reboot. launch app... opens and instantly closes.
As of flutter release linux in the alpha channel we should deploy a snap version of Converter NOW. All the packages we use have linux support. We are just waiting this issue to be fixed flutter/flutter#60743
UPDATE 28th July
The app can be compiled and works but has some graphical bugs. We are waiting for a stabler version of flutter for linux.
If you change the logo visibility in the settings you need to restart the app to see the difference
In appManager, this could be avoided:
if(listaConversioni==null){ return SizedBox(); }
Add the Web App to this repo and not to a separate one
Hi @ferraridamiano I would like to make a proposition for the organization of the app as I believe it would be better if we have Master Categories instead of having all the tabs on the side of the app, I propose to use categories like:
Geometry: Length, Area, Volume, Angles
Finance : Currencies
Physics: Force, Speed, Temperature, Time Energy, Power, Pressure, Mass
Numerical: Numeral systems, SI Prefix
Practical: Fuel Consumption, Shoe size, Digital Data, Torque
I think It will make the app more organized and easier quicker to navigate!
hope you give it a thought :)
The Linux version takes up 60-70% of my CPU usage on Fedora 33 KDE. I installed it via the snap store.
Any idea why? Is it a flutter bug?
Specs:
Kernel: Linux 5.10.20-200.fc33.x86_64 x86_64
Distro: Fedora release 33 (Thirty Three)
CPU: Intel(R) Core(TM) i5-7300U CPU @ 2.60GHz
4 cores/threads
3500.00 MHz
RAM: 7.61 GiB
GPU: Mesa Intel(R) HD Graphics 620 (KBL GT2)
OpenGL 4.6 (Compatibility Profile) Mesa 20.3.4
GLSL 4.60
Here in the UK a size 9 is about EU 43, according to your converter, which looks really nice, an EU size 43 is UK 7.08 for men. I wear uk size 9 shoes and they have EU43 marked on them. Every other conversion list I can find online agrees with my shoes.
diziet
when editing files, the date is often in the form of a number (example: 1625749670) that is difficult to understand. this is the number in Unix time.
you will have a better converter if you add Unix time
here are examples of online converters:
https://unixtime-converter.com/
https://i-leon.ru/tools/time
On desktop and web some option in the settings have no sense. For example: if I downloaded the linux app I don't want to rate the android app on the play store. But a good option would be: "download android app" or "rate the app on snap store", etc.
We should use intl package for translation and using more modern arb files instead of json. And we should rename the italian key in english key so that the contributors effort will be less.
Hey! I LOVE your app and it meets all of my needs, so thank you. But just because it misses timezone conversion it makes it difficult to use it as the default. Hoping there is a possibility that you can add this.
This will be something diffferent than usual because we need to integrate also a map
Hi @ferraridamiano,
First thank you for this application :-)
In the search, there is a problem if the name is on multiple lines
Would it be possible / make sense to integrate conversion (actually it's more a calculation than a conversation) like the following?
https://www.easycalculation.com/unit-conversion/amps-to-watt.php
https://www.easycalculation.com/unit-conversion/watt-to-amps.php
If I go to the "Numeral systems" screen, and type "8e" or "8E" into the "Hexadecimal" box, the other boxes show incorrect answers:
Visible in both Android app (2.4.1, F-droid) and on website at time of writing.
At the moment every icon has a different style and not every icon looks nice. I am not good with graphics, so if you are you can contribute to this project! You can post here below your suggestions. Then I will tell you how you can submit a PR.
As requested by many app user we should add a tools section where we can add any kind of tools, such as: time transfer calculator, trip cost (cost of fuel on a given distance), etc
I opened a new branch dedicated to this feature
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.