Compare commits
332 commits
Author | SHA1 | Date | |
---|---|---|---|
|
9ba80c3609 | ||
|
33be8dcdc6 | ||
|
089f3ae0b7 | ||
|
fb150421a6 | ||
|
d169f6237f | ||
|
e14dc03524 | ||
|
97aa5024b4 | ||
|
f880c5d274 | ||
|
0973fb5230 | ||
|
416f77765c | ||
|
a59c6b7338 | ||
|
0552a84e6f | ||
|
3a23dd6288 | ||
|
b7d0e8012a | ||
|
fa0921d1b0 | ||
|
7a00917ca2 | ||
|
ddf7115579 | ||
|
014a52c215 | ||
|
07142e25a7 | ||
|
55e813749a | ||
|
1d7cbbd1bf | ||
|
1ea344c69a | ||
|
5cd6e2e6c8 | ||
|
c0c15bb811 | ||
|
d5a34ea11b | ||
|
f174c0f336 | ||
|
d0791279a2 | ||
|
88a7bafffb | ||
|
27e276a092 | ||
|
383fb24881 | ||
|
8ed047a1aa | ||
|
6c7da7b28d | ||
|
b2e843c5d9 | ||
|
91e1757a20 | ||
|
8bce420296 | ||
|
2cc70f9221 | ||
|
dd57938153 | ||
|
fc246ac5a2 | ||
|
33ceb30885 | ||
|
46e1546e5b | ||
|
dd3339bc3b | ||
|
9a7858f279 | ||
|
6d0d0efe36 | ||
|
aa125fcdc1 | ||
|
0d565752d5 | ||
|
6646f657d2 | ||
|
647d620d45 | ||
|
b459a50f60 | ||
|
da64975e68 | ||
|
58dbbe52ce | ||
|
275bbba853 | ||
|
ceb27da369 | ||
|
b8600ab472 | ||
|
3cfd4f8248 | ||
|
8eae7203f0 | ||
|
42f7a2590e | ||
|
4b1536579d | ||
|
f3400916d9 | ||
|
696634c08f | ||
|
a00abd4f3a | ||
|
1342079b6b | ||
|
4d310776ce | ||
|
cb7367c04f | ||
|
51f72b4e7b | ||
|
400614a8f1 | ||
|
1e11b6b775 | ||
|
902bc45207 | ||
|
8275ec8f9e | ||
|
441a5ee680 | ||
|
a46986f050 | ||
|
fa5fbb8ce6 | ||
|
cda285ea15 | ||
|
f08c459bc1 | ||
|
1f945c4dfd | ||
|
c5b55a291b | ||
|
013493c0dd | ||
|
58373c7c9c | ||
|
504a77f6ad | ||
|
0f29d2bdad | ||
|
da07dc23c7 | ||
|
265ba143ab | ||
|
f77d09d147 | ||
|
b160fc8fa4 | ||
|
225a5240b2 | ||
|
dc3f90e346 | ||
|
e391c074c4 | ||
|
d0464a5727 | ||
|
42ad98da43 | ||
|
6f195dc791 | ||
|
4c79b5e8c2 | ||
|
2807fc08fb | ||
|
78c7519673 | ||
|
8435b7e2ce | ||
|
bf7ed5f9da | ||
|
7e13bf32b9 | ||
|
c7798bc4d6 | ||
|
6d249bd7a6 | ||
|
ba87cbd78d | ||
|
fe54dd91b9 | ||
|
7aae058e35 | ||
|
df60d31e99 | ||
|
5f71e44d1d | ||
|
0523449735 | ||
|
50c14a45c2 | ||
|
28e543d9f9 | ||
|
b7798d63b8 | ||
|
682599a7a0 | ||
|
09c9b22729 | ||
|
2aa58f3a50 | ||
|
1d6019234c | ||
|
5ae0262037 | ||
|
27538307bc | ||
|
3bee98ab18 | ||
|
f6055fb838 | ||
|
319372d293 | ||
|
a25de0e47f | ||
|
8d9305d0a7 | ||
|
cd31ec1cb3 | ||
|
6ba460cfd6 | ||
|
d22cdba9f8 | ||
|
ad58186614 | ||
|
2a4d3a03e7 | ||
|
3fc2bb815d | ||
|
255b984a2e | ||
|
eb03e23dd1 | ||
|
65676517b2 | ||
|
82c4f6a638 | ||
|
bc333a28f4 | ||
|
c0e88067e2 | ||
|
5924f3e96f | ||
|
8ab9339fa8 | ||
|
b231b43cf0 | ||
|
42a24b6e1c | ||
|
3d662906cf | ||
|
0fff07070d | ||
|
ede92464b2 | ||
|
24d6031c79 | ||
|
9333a91b42 | ||
|
74494a168b | ||
|
3f475ebfde | ||
|
83186a6a64 | ||
|
4ce9c95ff4 | ||
|
0c9170ae3c | ||
|
63bded87ea | ||
|
b1d7d1dfde | ||
|
7dd2ce10bd | ||
|
c945d406c0 | ||
|
0f8b8d6429 | ||
|
87bf49aac1 | ||
|
990ea77d6a | ||
|
cb4e454342 | ||
|
e3cc72d556 | ||
|
18260c11ee | ||
|
a5939c975a | ||
|
dd2faf0851 | ||
|
4124fbb7bb | ||
|
36957460ce | ||
|
3b4a704e65 | ||
|
7da49fa7a3 | ||
|
8a738583a0 | ||
|
0f90107d50 | ||
|
0468965ea8 | ||
|
dd185ef7bd | ||
|
53a47b3f90 | ||
|
0306dbbc6c | ||
|
10374a6aa3 | ||
|
321338a826 | ||
|
232178f6d1 | ||
|
7af186dbd0 | ||
|
d90d63f361 | ||
|
7dbb7c9581 | ||
|
d8a30f401d | ||
|
613512ef86 | ||
|
e39177e9e7 | ||
|
a7064c56f8 | ||
|
06baac107a | ||
|
7e9be7421f | ||
|
8a697af1de | ||
|
6d7e12d667 | ||
|
d855bf9ecc | ||
|
da68f09c69 | ||
|
bf56634b8c | ||
|
f80c39cc97 | ||
|
5247084f9d | ||
|
421961de2c | ||
|
3dcb16d8a3 | ||
|
ba0b925076 | ||
|
9a4223dc07 | ||
|
7c1140d365 | ||
|
bc2f58da8a | ||
|
bb508bf314 | ||
|
ac61a8b3e3 | ||
|
9871c97b0d | ||
|
42f1b8d47e | ||
|
7e148c8ee9 | ||
|
31ee0b49f8 | ||
|
26532b4203 | ||
|
c65f80f079 | ||
|
23cd9b9c12 | ||
|
8544a25301 | ||
|
d60c01ecf2 | ||
|
7400910f9f | ||
|
02546658af | ||
|
7d9d0556b9 | ||
|
701b3ba5aa | ||
|
1be7975c86 | ||
|
e0296930c7 | ||
|
866e135479 | ||
|
641d615215 | ||
|
e3dea68db8 | ||
|
328830d77d | ||
|
2cee1e7523 | ||
|
86b3e222e0 | ||
|
cc9263daff | ||
|
88767964a9 | ||
|
45792d2cbc | ||
|
4bd5831d8a | ||
|
fd4448cb56 | ||
|
0209abc8bc | ||
|
fc4c81505c | ||
|
64daf907d5 | ||
|
9da8b96169 | ||
|
1b8675a076 | ||
|
835733bd9a | ||
|
ab51ba6cfc | ||
|
9a2b48ed2d | ||
|
dca770e9e3 | ||
|
1a39ee223f | ||
|
f72f94a733 | ||
|
74720e14ff | ||
|
d2e47e63a4 | ||
|
1f03ca6b42 | ||
|
2f8e0ae17c | ||
|
31b37d741d | ||
|
af50bdcf5e | ||
|
7ec2c2d938 | ||
|
e01ba91e93 | ||
|
3afee08ae3 | ||
|
040a59e2cd | ||
|
5a91c64f0c | ||
|
09a1b2cadd | ||
|
068eb59675 | ||
|
0ef4ae1f71 | ||
|
c4ec32fa4f | ||
|
fc6a861b65 | ||
|
e2ca0cb30b | ||
|
bf746296b2 | ||
|
2b5603da73 | ||
|
1944bb8f1c | ||
|
8a47668bad | ||
|
2e106038bf | ||
|
c499097ad7 | ||
|
d3215922e9 | ||
|
562849bc9e | ||
|
c9f848254f | ||
|
0ea848d8a4 | ||
|
24646c40e1 | ||
|
5f3c598bc0 | ||
|
55dfc08d2a | ||
|
df89d6cdaf | ||
|
5ba58cae05 | ||
|
2f86c628bb | ||
|
0d668f10ef | ||
|
6ae90943b7 | ||
|
e3a595da48 | ||
|
ba2cfccf3d | ||
|
03cc68d611 | ||
|
09a29230f7 | ||
|
d976ea35ea | ||
|
4282a37718 | ||
|
503ef37a5b | ||
|
091569dd83 | ||
|
a728d92c91 | ||
|
b05b42e7ae | ||
|
746a7eda97 | ||
|
e14573c0d2 | ||
|
f1d2a6e36c | ||
|
739ae18b75 | ||
|
bb6f7de586 | ||
|
c54398d6b0 | ||
|
4a67ddf35a | ||
|
e2d0cc61dd | ||
|
d1d7b2cb70 | ||
|
8ec29eeb1d | ||
|
cd56e31589 | ||
|
d707b0d71a | ||
|
e1011080aa | ||
|
ef108e5403 | ||
|
6be493a07c | ||
|
b393b53d29 | ||
|
6d070a1d7e | ||
|
53f14a3ecd | ||
|
8e971bc861 | ||
|
02a311eeca | ||
|
c20706206f | ||
|
84635c87ab | ||
|
c7cb91a623 | ||
|
c0e865e66e | ||
|
16261dd7db | ||
|
7a0e1c1016 | ||
|
5f822be769 | ||
|
c9556cbc4e | ||
|
ebbda5b0a3 | ||
|
dc14b53fd4 | ||
|
1f6a28da4f | ||
|
3ff6e00172 | ||
|
2375a1b276 | ||
|
a2484be22a | ||
|
14cc02dac4 | ||
|
08f28ae431 | ||
|
a229ade619 | ||
|
1664fdfda9 | ||
|
f417ae6259 | ||
|
d0ebf8b45d | ||
|
c1ca3610a1 | ||
|
770216dd45 | ||
|
4d5936e49c | ||
|
2d617e9cf4 | ||
|
5310227e93 | ||
|
e2b69d58d3 | ||
|
07e4d22540 | ||
|
f914bd4a6e | ||
|
3cf88d6200 | ||
|
af89ab4564 | ||
|
f9e6ffdade | ||
|
25e0445228 | ||
|
32492cdd59 | ||
|
92e70aafd6 | ||
|
5880aa756c | ||
|
e83abc77af | ||
|
8f187a6817 | ||
|
a954c21709 |
38
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. iOS]
|
||||
- Browser [e.g. chrome, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Smartphone (please complete the following information):**
|
||||
- Device: [e.g. iPhone6]
|
||||
- OS: [e.g. iOS8.1]
|
||||
- Browser [e.g. stock browser, safari]
|
||||
- Version [e.g. 22]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
3
.gitignore
vendored
|
@ -15,6 +15,7 @@ migrate_working_dir/
|
|||
*.ipr
|
||||
*.iws
|
||||
.idea/
|
||||
.cxx/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
|
@ -42,5 +43,3 @@ app.*.map.json
|
|||
/android/app/debug
|
||||
/android/app/profile
|
||||
/android/app/release
|
||||
|
||||
/lib/api_key.dart
|
34
.metadata
|
@ -1,11 +1,11 @@
|
|||
# This file tracks properties of this Flutter project.
|
||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||
#
|
||||
# This file should be version controlled.
|
||||
# This file should be version controlled and should not be manually edited.
|
||||
|
||||
version:
|
||||
revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
channel: stable
|
||||
revision: "2663184aa79047d0a33a14a3b607954f8fdd8730"
|
||||
channel: "stable"
|
||||
|
||||
project_type: app
|
||||
|
||||
|
@ -13,26 +13,26 @@ project_type: app
|
|||
migration:
|
||||
platforms:
|
||||
- platform: root
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: android
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: ios
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: linux
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: macos
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: web
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
- platform: windows
|
||||
create_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
base_revision: 135454af32477f815a7525073027a3ff9eff1bfd
|
||||
create_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
base_revision: 2663184aa79047d0a33a14a3b607954f8fdd8730
|
||||
|
||||
# User provided section
|
||||
|
||||
|
|
43
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
# Code of Conduct
|
||||
|
||||
## Our Commitment
|
||||
|
||||
In the interest of fostering an open and friendly community, we, as contributors and maintainers, pledge to make participation in our project and our community a harassment-free experience for everyone.
|
||||
|
||||
## Standards of Behavior
|
||||
|
||||
1. **Respect**: Be respectful and considerate of different viewpoints and experiences.
|
||||
|
||||
2. **Collaboration**: Collaborate with community members, uphold principles of openness, and assist each other.
|
||||
|
||||
3. **Friendliness**: Remember that diversity of opinions and experiences is valuable for our community. Be friendly and supportive.
|
||||
|
||||
4. **Responsibility**: Be mindful of your words and actions. If you make a commitment, strive to fulfill it.
|
||||
|
||||
## Unacceptable Behavior
|
||||
|
||||
Unacceptable behavior includes but is not limited to:
|
||||
|
||||
1. **Discrimination**: No forms of discrimination or harassment based on race, gender, sexual orientation, nationality, religion, or other characteristics.
|
||||
|
||||
2. **Insults and Threats**: No offensive comments, threats, or bullying.
|
||||
|
||||
3. **Hostile Conduct**: No actions intended to create a hostile atmosphere in the community.
|
||||
|
||||
## Reporting Procedure
|
||||
|
||||
If you believe you're experiencing a violation of the code of conduct, please report it by sending an email to darkmoonight2022@gmail.com.
|
||||
|
||||
## Conclusion
|
||||
|
||||
We encourage all participants to adhere to this code of conduct. Violation of these principles may result in temporary or permanent exclusion from the community.
|
||||
|
||||
Thank you for your contribution and cooperation in creating an open and friendly community!
|
||||
|
||||
## Changes
|
||||
|
||||
This code of conduct may be revised from time to time. The most current version will always be available in this file.
|
||||
|
||||
## Attribution
|
||||
|
||||
This code of conduct is adapted from [Contributor Covenant](https://www.contributor-covenant.org/).
|
37
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
# Contribution Guidelines
|
||||
|
||||
Thank you for considering contributing to our project! We welcome your input and appreciate your efforts. To ensure a smooth collaboration, please take a moment to review the following guidelines.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
This project and everyone participating in it are governed by our [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [project email].
|
||||
|
||||
## How to Contribute
|
||||
|
||||
1. Fork the repository and clone it locally.
|
||||
2. Create a new branch for your feature or bug fix.
|
||||
3. Make your changes and commit them.
|
||||
4. Push your changes to your fork on GitHub.
|
||||
5. Open a pull request in the original repository. Provide a clear title and description of your changes.
|
||||
|
||||
## Coding Standards
|
||||
|
||||
Follow the coding standards and style guide used in the project. If there's no specific guide, stick to the existing code style.
|
||||
|
||||
## Testing
|
||||
|
||||
Ensure that your code changes do not break existing functionality. Write tests for new features or bug fixes if applicable.
|
||||
|
||||
## Documentation
|
||||
|
||||
Update the documentation if your changes affect it. This includes the README.md file and any additional documentation files.
|
||||
|
||||
## Issues
|
||||
|
||||
Before starting work on a new feature or bug fix, check the issue tracker for related discussions or known issues.
|
||||
|
||||
## License
|
||||
|
||||
By contributing, you agree that your contributions will be licensed under the project's license.
|
||||
|
||||
Thank you for your contribution!
|
86
README.md
|
@ -1,52 +1,66 @@
|
|||
<div align="center">
|
||||
<img src="/assets/icons/icon.png" width="150"/>
|
||||
<h2>Rain</h2>
|
||||
<div align='center'>
|
||||
<img src='/readme/icon.png' width='150'/>
|
||||
<h2>🌦️ Rain</h2>
|
||||
</div>
|
||||
|
||||
### Short Description:
|
||||
<p align='center'>
|
||||
<p align='center'>
|
||||
<a href='https://github.com/darkmoonight/Rain/stargazers'><img alt='Stars' src='https://img.shields.io/github/stars/darkmoonight/Rain?color=abc0d3'/></a>
|
||||
<a href='https://github.com/darkmoonight/Rain/forks'><img alt='Forks' src='https://img.shields.io/github/forks/darkmoonight/Rain?color=abc0d3'/></a>
|
||||
<a href='https://github.com/darkmoonight/Rain/releases'><img alt='GitHub release' src='https://img.shields.io/github/v/release/darkmoonight/Rain?color=abc0d3'/></a>
|
||||
<a href='https://github.com/darkmoonight/Rain/blob/main/LICENSE'><img alt='License' src='https://img.shields.io/github/license/darkmoonight/Rain?color=abc0d3'/></a>
|
||||
</p>
|
||||
</p>
|
||||
|
||||
<!-- Приложение для просмотра погоды в вашем городе -->
|
||||
<p align='center'> Tired of unpredictable weather? Rain's got you covered! Get ready for any forecast. 🌦️ </p>
|
||||
|
||||
An application for viewing the weather in your city
|
||||
### 🌍 Be aware of the weather
|
||||
|
||||
### Description:
|
||||
With Rain, you can explore the weather in your city and beyond. We offer an array of features to keep you informed and prepared:
|
||||
|
||||
<!-- Данное приложение позволяет смотреть погоду в вашем городе.
|
||||
Предоставлены следующие возможности:
|
||||
- Просмотр погоды на данный момент
|
||||
- Просмотр погоды по часам
|
||||
- Просмотр погоды на неделю
|
||||
- Просмотр подробных данных о погоде
|
||||
- Локализация (ru/en/it)
|
||||
- Кэширование данных
|
||||
- Выбор города самостоятельно
|
||||
- Добавление карточек других городов
|
||||
Также мы постарались сделать дизайн максимально удобным и красивым. -->
|
||||
- 🌟 **View Current Weather:** Stay up-to-date with real-time weather conditions in your area.
|
||||
- 🌅 **View Weather by Hour:** Plan your day effectively with hourly forecasts.
|
||||
- 📆 **View the Weather for the Week:** Get a week-long weather outlook at your fingertips.
|
||||
- 🌡️ **View Detailed Weather Data:** Dive deep into weather statistics for a comprehensive understanding.
|
||||
- 🌐 **Localization:** Choose your preferred language from a wide range of options.
|
||||
- 🏙️ **Data Caching:** Access weather information even when you're offline.
|
||||
- 🌆 **Choose Your City:** Set your location or add other cities to your list.
|
||||
- 🧮 **Metric or Imperial:** Customize your measurement system for temperature and more.
|
||||
- 🌡️ **Celsius or Fahrenheit:** Pick your preferred temperature unit.
|
||||
- 🕰️ **12-Hour or 24-Hour Time Formats:** Adjust the time display to your liking.
|
||||
- 🔔 **Notifications:** Receive weather alerts and stay informed.
|
||||
- 🧩 **Widget:** Add a weather widget to your home screen for quick updates.
|
||||
- 🎨 **Beautiful Design**
|
||||
|
||||
This application allows you to view the weather in your city.
|
||||
The following options are provided:
|
||||
Our application not only offers functionality but also boasts an aesthetically pleasing design. We have meticulously crafted Rain with your user experience as our top priority, guaranteeing both convenience and elegance in a single package.
|
||||
|
||||
- View current weather
|
||||
- View weather by hour
|
||||
- View the weather for the week
|
||||
- View detailed weather data
|
||||
- Localization (ru/en/it)
|
||||
- Data caching
|
||||
- Choose the city yourself
|
||||
- Adding cards of other cities
|
||||
### 🌐 Reliable Data Sources
|
||||
|
||||
We also tried to make the design as convenient and beautiful as possible.
|
||||
We fetch weather data from [Open-Meteo](https://open-meteo.com/en/docs) and use [Open-Meteo's Geocoding API](https://open-meteo.com/en/docs/geocoding-api) to help you find cities easily.
|
||||
|
||||
### Services used:
|
||||
### 📸 Screenshots
|
||||
|
||||
- The app receives weather data from [Open-Meteo](https://open-meteo.com/)
|
||||
- Cities are searched using [Geoapify](https://www.geoapify.com/)
|
||||
<img src='/readme/1.png' width='200'/> <img src='/readme/2.png' width='200'/> <img src='/readme/3.png' width='200'/> <img src='/readme/4.png' width='200'/> <img src='/readme/5.png' width='200'/> <img src='/readme/6.png' width='200'/> <img src='/readme/7.png' width='200'/> <img src='/readme/8.png' width='200'/>
|
||||
|
||||
### Screenshots:
|
||||
### 💰 Support Us
|
||||
|
||||
<img src="/readme/1.jpg" width="200"/> <img src="/readme/2.jpg" width="200"/> <img src="/readme/3.jpg" width="200"/>
|
||||
If you find Rain valuable and worthy for future innovation, consider supporting us through donations:
|
||||
|
||||
### Download:
|
||||
[](https://www.donationalerts.com/r/darkmoonight)
|
||||
[](https://yoomoney.ru/to/4100117672775961)
|
||||
|
||||
### 📥 Get Rain Now
|
||||
|
||||
[](https://play.google.com/store/apps/details?id=com.yoshi.rain)
|
||||
[](https://apps.rustore.ru/app/com.yoshi.rain)
|
||||
|
||||
Or get the latest APK from the [Releases Section](https://github.com/DarkMooNight/Rain/releases/latest). You can also find the app on IzzyOnDroid via a F-Droid client [here](https://apt.izzysoft.de/fdroid/index/apk/com.yoshi.rain).
|
||||
|
||||
### 📃 License
|
||||
|
||||
This project is licensed under the [MIT License](./LICENSE).
|
||||
|
||||
### 👨💻 Our Contributors
|
||||
|
||||
<a href='https://github.com/darkmoonight/Rain/graphs/contributors'>
|
||||
<img src='https://contrib.rocks/image?repo=darkmoonight/Rain'/>
|
||||
</a>
|
||||
|
|
|
@ -1,30 +1,9 @@
|
|||
def localProperties = new Properties()
|
||||
def localPropertiesFile = rootProject.file('local.properties')
|
||||
if (localPropertiesFile.exists()) {
|
||||
localPropertiesFile.withReader('UTF-8') { reader ->
|
||||
localProperties.load(reader)
|
||||
}
|
||||
plugins {
|
||||
id "com.android.application"
|
||||
id "kotlin-android"
|
||||
id "dev.flutter.flutter-gradle-plugin"
|
||||
}
|
||||
|
||||
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||
if (flutterRoot == null) {
|
||||
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||
}
|
||||
|
||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||
if (flutterVersionCode == null) {
|
||||
flutterVersionCode = '1'
|
||||
}
|
||||
|
||||
def flutterVersionName = localProperties.getProperty('flutter.versionName')
|
||||
if (flutterVersionName == null) {
|
||||
flutterVersionName = '1.0'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
def keystoreProperties = new Properties()
|
||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
|
@ -32,49 +11,76 @@ if (keystorePropertiesFile.exists()) {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion flutter.compileSdkVersion
|
||||
ndkVersion flutter.ndkVersion
|
||||
namespace = 'com.yoshi.rain'
|
||||
compileSdk = 35
|
||||
ndkVersion = '29.0.13113456'
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
coreLibraryDesugaringEnabled = true
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
jvmTarget = JavaVersion.VERSION_17
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
dependenciesInfo {
|
||||
// Disables dependency metadata when building APKs.
|
||||
includeInApk = false
|
||||
// Disables dependency metadata when building Android App Bundles.
|
||||
includeInBundle = false
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.yoshi.rain"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion flutter.targetSdkVersion
|
||||
versionCode flutterVersionCode.toInteger()
|
||||
versionName flutterVersionName
|
||||
applicationId = 'com.yoshi.rain'
|
||||
minSdk = 23
|
||||
targetSdk = flutter.targetSdkVersion
|
||||
versionCode = flutter.versionCode
|
||||
versionName = flutter.versionName
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
keyAlias keystoreProperties['keyAlias']
|
||||
keyPassword keystoreProperties['keyPassword']
|
||||
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
storePassword keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
release {
|
||||
keyAlias = keystoreProperties['keyAlias']
|
||||
keyPassword = keystoreProperties['keyPassword']
|
||||
storeFile = keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
|
||||
storePassword = keystoreProperties['storePassword']
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
signingConfig = signingConfigs.release
|
||||
}
|
||||
|
||||
debug {
|
||||
signingConfig = signingConfigs.debug
|
||||
minifyEnabled = true
|
||||
}
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
viewBinding = true
|
||||
}
|
||||
}
|
||||
|
||||
flutter {
|
||||
source '../..'
|
||||
source = "../.."
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
implementation("androidx.core:core-remoteviews:1.1.0")
|
||||
implementation("com.google.android.material:material:1.12.0")
|
||||
implementation('androidx.work:work-runtime-ktx:2.10.0')
|
||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
|
||||
}
|
||||
|
||||
// Remove this for FLOSS version
|
||||
// configurations.all {
|
||||
// exclude group: 'com.google.android.gms'
|
||||
// }
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.rain">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.rain">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
|
||||
<application
|
||||
<application
|
||||
android:label="Rain"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:extractNativeLibs="true">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
|
@ -16,19 +18,54 @@
|
|||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:enableOnBackInvokedCallback="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="es.antonborri.home_widget.action.LAUNCH" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<receiver
|
||||
android:name=".OreoWidget"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||
</intent-filter>
|
||||
<meta-data
|
||||
android:name="android.appwidget.provider"
|
||||
android:resource="@xml/oreo_widget_info" />
|
||||
</receiver>
|
||||
|
||||
<receiver android:name="es.antonborri.home_widget.HomeWidgetBackgroundReceiver"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="es.antonborri.home_widget.action.BACKGROUND" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<service android:name="es.antonborri.home_widget.HomeWidgetBackgroundService"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE"
|
||||
android:exported="true" />
|
||||
|
||||
<meta-data
|
||||
android:name="flutterEmbedding"
|
||||
android:value="2" />
|
||||
<receiver android:exported="false"
|
||||
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />
|
||||
<receiver android:exported="false"
|
||||
android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
|
||||
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
|
||||
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
65
android/app/src/main/java/com/yoshi/rain/OreoWidget.kt
Normal file
|
@ -0,0 +1,65 @@
|
|||
package com.yoshi.rain
|
||||
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.BitmapFactory
|
||||
import android.graphics.Color
|
||||
import android.widget.RemoteViews
|
||||
import androidx.core.util.SizeFCompat
|
||||
import androidx.core.widget.updateAppWidget
|
||||
import es.antonborri.home_widget.HomeWidgetLaunchIntent
|
||||
import es.antonborri.home_widget.HomeWidgetProvider
|
||||
|
||||
/**
|
||||
* Implementation of App Widget functionality.
|
||||
*/
|
||||
class OreoWidget : HomeWidgetProvider() {
|
||||
override fun onUpdate(
|
||||
context: Context,
|
||||
appWidgetManager: AppWidgetManager,
|
||||
appWidgetIds: IntArray,
|
||||
widgetData: SharedPreferences
|
||||
) {
|
||||
for (appWidgetId in appWidgetIds) {
|
||||
val supportedSizes = listOf(
|
||||
SizeFCompat(50.0f, 0.0f),
|
||||
SizeFCompat(100.0f, 0.0f),
|
||||
SizeFCompat(250.0f, 0.0f),
|
||||
SizeFCompat(300.0f, 0.0f),
|
||||
)
|
||||
appWidgetManager.updateAppWidget(appWidgetId, supportedSizes) {
|
||||
val layoutId = when (it) {
|
||||
supportedSizes[0] -> R.layout.oreo_widget_mini
|
||||
supportedSizes[1] -> R.layout.oreo_widget_small
|
||||
supportedSizes[2] -> R.layout.oreo_widget_medium
|
||||
else -> R.layout.oreo_widget_big
|
||||
}
|
||||
RemoteViews(context.packageName, layoutId).apply {
|
||||
val pendingIntent = HomeWidgetLaunchIntent.getActivity(
|
||||
context,
|
||||
MainActivity::class.java
|
||||
)
|
||||
setOnClickPendingIntent(R.id.widget_day_oreo, pendingIntent)
|
||||
|
||||
val image = widgetData.getString("weather_icon", null)
|
||||
setImageViewBitmap(R.id.widget_day_icon, BitmapFactory.decodeFile(image))
|
||||
|
||||
val degree = widgetData.getString("weather_degree", null)
|
||||
setTextViewText(R.id.widget_day_title, degree)
|
||||
|
||||
val backgroundColor = widgetData.getString("background_color", null)
|
||||
if (backgroundColor != null) {
|
||||
setInt(R.id.widget_day_oreo, "setBackgroundColor", Color.parseColor(backgroundColor))
|
||||
}
|
||||
|
||||
val textColor = widgetData.getString("text_color", null)
|
||||
if (textColor != null) {
|
||||
setTextColor(R.id.widget_day_title,Color.parseColor(textColor))
|
||||
setTextColor(R.id.widget_day_time,Color.parseColor(textColor))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.rain
|
||||
package com.yoshi.rain
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 1.6 KiB |
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Background for widgets to make the rounded corners based on the
|
||||
appWidgetRadius attribute value
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="?attr/appWidgetRadius" />
|
||||
<solid android:color="?android:attr/colorBackground" />
|
||||
</shape>
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><!--
|
||||
Background for views inside widgets to make the rounded corners based on the
|
||||
appWidgetInnerRadius attribute value
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="?attr/appWidgetInnerRadius" />
|
||||
<solid android:color="?android:attr/colorAccent" />
|
||||
</shape>
|
Before Width: | Height: | Size: 70 B After Width: | Height: | Size: 69 B |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 7 KiB |
Before Width: | Height: | Size: 70 B After Width: | Height: | Size: 69 B |
BIN
android/app/src/main/res/drawable/cloud.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
android/app/src/main/res/font/ubuntu.ttf
Normal file
55
android/app/src/main/res/layout/oreo_widget_big.xml
Normal file
|
@ -0,0 +1,55 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Android.AppWidget.Container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSecondaryContainer"
|
||||
android:theme="@style/Theme.Android.AppWidgetContainer"
|
||||
android:id="@+id/widget_day_oreo">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/widget_day_weather"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<TextClock
|
||||
android:id="@+id/widget_day_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:format12Hour="@string/date_format_widget_oreo_big_style"
|
||||
android:format24Hour="@string/date_format_widget_oreo_big_style"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textSize="@dimen/widget_large_title_text_size"
|
||||
tools:ignore="ObsoleteLayoutParam"
|
||||
tools:text="Saturday, September 30 " />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_day_icon"
|
||||
android:layout_width="@dimen/widget_mini_weather_icon_size"
|
||||
android:layout_height="@dimen/widget_mini_weather_icon_size"
|
||||
android:src="@drawable/cloud"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_day_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/little_margin"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Large"
|
||||
android:textSize="@dimen/widget_large_title_text_size"
|
||||
tools:text="28°" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
55
android/app/src/main/res/layout/oreo_widget_medium.xml
Normal file
|
@ -0,0 +1,55 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Android.AppWidget.Container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSecondaryContainer"
|
||||
android:theme="@style/Theme.Android.AppWidgetContainer"
|
||||
android:id="@+id/widget_day_oreo">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/widget_day_weather"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<TextClock
|
||||
android:id="@+id/widget_day_time"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:format12Hour="@string/date_format_widget_oreo_style"
|
||||
android:format24Hour="@string/date_format_widget_oreo_style"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textSize="@dimen/widget_large_title_text_size"
|
||||
tools:ignore="ObsoleteLayoutParam"
|
||||
tools:text="Saturday, September 30 " />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_day_icon"
|
||||
android:layout_width="@dimen/widget_mini_weather_icon_size"
|
||||
android:layout_height="@dimen/widget_mini_weather_icon_size"
|
||||
android:src="@drawable/cloud"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_day_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/little_margin"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Large"
|
||||
android:textSize="@dimen/widget_large_title_text_size"
|
||||
tools:text="28°" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
41
android/app/src/main/res/layout/oreo_widget_mini.xml
Normal file
|
@ -0,0 +1,41 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Android.AppWidget.Container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSecondaryContainer"
|
||||
android:theme="@style/Theme.Android.AppWidgetContainer"
|
||||
android:id="@+id/widget_day_oreo">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/widget_day_weather"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_day_icon"
|
||||
android:layout_width="@dimen/widget_little_weather_icon_size"
|
||||
android:layout_height="@dimen/widget_little_weather_icon_size"
|
||||
android:src="@drawable/cloud"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_day_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Large"
|
||||
android:textSize="@dimen/widget_title_text_size"
|
||||
tools:ignore="ObsoleteLayoutParam"
|
||||
tools:text="21°" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
42
android/app/src/main/res/layout/oreo_widget_small.xml
Normal file
|
@ -0,0 +1,42 @@
|
|||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
style="@style/Widget.Android.AppWidget.Container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSecondaryContainer"
|
||||
android:theme="@style/Theme.Android.AppWidgetContainer"
|
||||
android:id="@+id/widget_day_oreo">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/widget_day_weather"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
tools:ignore="UseCompoundDrawables">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/widget_day_icon"
|
||||
android:layout_width="@dimen/widget_little_weather_icon_size"
|
||||
android:layout_height="@dimen/widget_little_weather_icon_size"
|
||||
android:src="@drawable/cloud"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/widget_day_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/little_margin"
|
||||
android:fontFamily="@font/ubuntu"
|
||||
android:maxLines="1"
|
||||
android:shadowDx="1"
|
||||
android:shadowDy="1"
|
||||
android:shadowRadius="1"
|
||||
android:textAppearance="@android:style/TextAppearance.Material.Large"
|
||||
android:textSize="@dimen/widget_design_title_text_size"
|
||||
tools:text="28°" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
<background android:drawable="@mipmap/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
|
||||
</adaptive-icon>
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
Normal file
After Width: | Height: | Size: 854 B |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.4 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
Normal file
After Width: | Height: | Size: 461 B |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.1 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
Before Width: | Height: | Size: 6.4 KiB After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 8 KiB |
After Width: | Height: | Size: 7.8 KiB |
20
android/app/src/main/res/values-night-v31/styles.xml
Normal file
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@style/Theme.Material3.DynamicColors.Dark.NoActionBar">
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenBackground">#181818</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@style/Theme.Material3.DynamicColors.Dark.NoActionBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
10
android/app/src/main/res/values-night-v31/themes.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!--
|
||||
Having themes.xml for night-v31 because of the priority order of the resource qualifiers.
|
||||
-->
|
||||
<style name="Theme.Android.AppWidgetContainerParent" parent="@style/Theme.Material3.DynamicColors.DayNight">
|
||||
<item name="appWidgetRadius">@android:dimen/system_app_widget_background_radius</item>
|
||||
<item name="appWidgetInnerRadius">@android:dimen/system_app_widget_inner_radius</item>
|
||||
</style>
|
||||
</resources>
|
|
@ -1,10 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<style name="LaunchTheme" parent="@style/Theme.Material3.DynamicColors.Dark.NoActionBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds" >false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="o_mr1">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
|
@ -12,7 +16,7 @@
|
|||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
|
||||
<style name="NormalTheme" parent="@style/Theme.Material3.DynamicColors.Dark.NoActionBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
13
android/app/src/main/res/values-v21/styles.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<resources>
|
||||
<style name="Widget.Android.AppWidget.Container" parent="android:Widget">
|
||||
<item name="android:id">@android:id/background</item>
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.Android.AppWidget.InnerView" parent="android:Widget">
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_inner_view_background</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
</style>
|
||||
</resources>
|
32
android/app/src/main/res/values-v31/styles.xml
Normal file
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@style/Theme.Material3.DynamicColors.DayNight.NoActionBar">
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowSplashScreenBackground">#181818</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
Flutter UI initializes, as well as behind your Flutter UI while its
|
||||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@style/Theme.Material3.DynamicColors.DayNight.NoActionBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
<style name="Widget.Android.AppWidget.Container" parent="android:Widget">
|
||||
<item name="android:id">@android:id/background</item>
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_background</item>
|
||||
<item name="android:clipToOutline">true</item>
|
||||
</style>
|
||||
<style name="Widget.Android.AppWidget.InnerView" parent="android:Widget">
|
||||
<item name="android:padding">?attr/appWidgetPadding</item>
|
||||
<item name="android:background">@drawable/app_widget_inner_view_background</item>
|
||||
<item name="android:textColor">?android:attr/textColorPrimary</item>
|
||||
<item name="android:clipToOutline">true</item>
|
||||
</style>
|
||||
</resources>
|
12
android/app/src/main/res/values-v31/themes.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!--
|
||||
Having themes.xml for v31 variant because @android:dimen/system_app_widget_background_radius
|
||||
and @android:dimen/system_app_widget_internal_padding requires API level 31
|
||||
-->
|
||||
<style name="Theme.Android.AppWidgetContainerParent"
|
||||
parent="@style/Theme.Material3.DynamicColors.DayNight">
|
||||
<item name="appWidgetRadius">@android:dimen/system_app_widget_background_radius</item>
|
||||
<item name="appWidgetInnerRadius">@android:dimen/system_app_widget_inner_radius</item>
|
||||
</style>
|
||||
</resources>
|
7
android/app/src/main/res/values/attrs.xml
Normal file
|
@ -0,0 +1,7 @@
|
|||
<resources>
|
||||
<declare-styleable name="AppWidgetAttrs">
|
||||
<attr name="appWidgetPadding" format="dimension" />
|
||||
<attr name="appWidgetInnerRadius" format="dimension" />
|
||||
<attr name="appWidgetRadius" format="dimension" />
|
||||
</declare-styleable>
|
||||
</resources>
|
63
android/app/src/main/res/values/dimens.xml
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- margin. -->
|
||||
<dimen name="large_margin">20dp</dimen>
|
||||
<dimen name="normal_margin">16dp</dimen>
|
||||
<dimen name="little_margin">8dp</dimen>
|
||||
|
||||
<!-- elevator. -->
|
||||
<dimen name="touch_rise_z">10dp</dimen>
|
||||
|
||||
<!-- image. -->
|
||||
<dimen name="current_weather_icon_container_size">128dp</dimen>
|
||||
<dimen name="current_weather_icon_size">80dp</dimen>
|
||||
<dimen name="standard_weather_icon_container_size">88dp</dimen>
|
||||
<dimen name="little_weather_icon_container_size">74dp</dimen>
|
||||
<dimen name="standard_weather_icon_size">56dp</dimen>
|
||||
<dimen name="little_weather_icon_size">42dp</dimen>
|
||||
<dimen name="material_icon_size">24dp</dimen>
|
||||
|
||||
<!-- view. -->
|
||||
<dimen name="material3_card_list_item_corner_radius">16dp</dimen>
|
||||
<dimen name="material3_card_list_item_inner_radius">12dp</dimen>
|
||||
<dimen name="material3_widget_corner_radius">16dp</dimen>
|
||||
<dimen name="material3_widget_inner_radius">12dp</dimen>
|
||||
<dimen name="spinner_drop_width">150dp</dimen>
|
||||
<dimen name="share_view_height">260dp</dimen>
|
||||
<dimen name="progress_view_size">36dp</dimen>
|
||||
<dimen name="trend_item_width">56dp</dimen>
|
||||
<dimen name="daily_trend_item_height">298dp</dimen>
|
||||
<dimen name="hourly_trend_item_height">256dp</dimen>
|
||||
<dimen name="action_bar_height">64dp</dimen>
|
||||
|
||||
<!-- text. -->
|
||||
<dimen name="main_title_text_size">96sp</dimen>
|
||||
<dimen name="design_title_text_size">48sp</dimen>
|
||||
<dimen name="large_title_text_size">22sp</dimen>
|
||||
<dimen name="title_text_size">18sp</dimen>
|
||||
<dimen name="content_text_size">14sp</dimen>
|
||||
<dimen name="subtitle_text_size">12sp</dimen>
|
||||
|
||||
<!-- widget. -->
|
||||
<dimen name="widget_grid_1">40dp</dimen>
|
||||
<dimen name="widget_grid_2">110dp</dimen>
|
||||
<dimen name="widget_grid_3">180dp</dimen>
|
||||
<dimen name="widget_grid_4">250dp</dimen>
|
||||
|
||||
<dimen name="widget_current_weather_icon_size">@dimen/standard_weather_icon_size</dimen> <!--
|
||||
56dp. -->
|
||||
<dimen name="widget_standard_weather_icon_size">48dp</dimen>
|
||||
<dimen name="widget_little_weather_icon_size">36dp</dimen>
|
||||
<dimen name="widget_mini_weather_icon_size">28dp</dimen>
|
||||
<dimen name="widget_design_title_text_size">24sp</dimen>
|
||||
<dimen name="widget_large_title_text_size">@dimen/large_title_text_size</dimen> <!-- 20sp. -->
|
||||
<dimen name="widget_title_text_size">@dimen/title_text_size</dimen> <!-- 16sp. -->
|
||||
<dimen name="widget_subtitle_text_size">@dimen/subtitle_text_size</dimen> <!-- 12sp. -->
|
||||
<dimen name="widget_content_text_size">@dimen/content_text_size</dimen> <!-- 14sp. -->
|
||||
<dimen name="widget_time_text_size">10sp</dimen>
|
||||
<dimen name="widget_aa_text_size">14dp</dimen>
|
||||
|
||||
<dimen name="widget_margin">0dp</dimen>
|
||||
|
||||
</resources>
|
6
android/app/src/main/res/values/strings.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_widget_description">Rain Widget</string>
|
||||
<string name="date_format_widget_oreo_style">EEE, d MMM │</string>
|
||||
<string name="date_format_widget_oreo_big_style">EEEE, d MMM │</string>
|
||||
</resources>
|
|
@ -1,13 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
|
||||
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode
|
||||
setting is off -->
|
||||
<style name="LaunchTheme" parent="@style/Theme.Material3.DynamicColors.DayNight.NoActionBar">
|
||||
<!-- Show a splash screen on the activity. Automatically removed when
|
||||
the Flutter engine draws its first frame -->
|
||||
<item name="android:windowBackground">@drawable/launch_background</item>
|
||||
<item name="android:forceDarkAllowed">false</item>
|
||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="o_mr1">shortEdges</item>
|
||||
</style>
|
||||
<!-- Theme applied to the Android Window as soon as the process has started.
|
||||
This theme determines the color of the Android Window while your
|
||||
|
@ -15,7 +17,15 @@
|
|||
running.
|
||||
|
||||
This Theme is only used starting with V2 of Flutter's Android embedding. -->
|
||||
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
|
||||
<style name="NormalTheme" parent="@style/Theme.Material3.DynamicColors.DayNight.NoActionBar">
|
||||
<item name="android:windowBackground">?android:colorBackground</item>
|
||||
</style>
|
||||
<style name="Widget.Android.AppWidget.Container" parent="android:Widget">
|
||||
<item name="android:id">@android:id/background</item>
|
||||
<item name="android:background">?attr/colorSurface</item>
|
||||
</style>
|
||||
<style name="Widget.Android.AppWidget.InnerView" parent="android:Widget">
|
||||
<item name="android:background">?attr/colorSurface</item>
|
||||
<item name="android:textColor">?attr/itemTextColor</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
|
16
android/app/src/main/res/values/themes.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<resources>
|
||||
<style name="Theme.Android.AppWidgetContainerParent" parent="@style/Theme.Material3.DynamicColors.DayNight">
|
||||
<!-- Radius of the outer bound of widgets to make the rounded corners -->
|
||||
<item name="appWidgetRadius">16dp</item>
|
||||
<!--
|
||||
Radius of the inner view's bound of widgets to make the rounded corners.
|
||||
It needs to be 8dp or less than the value of appWidgetRadius
|
||||
-->
|
||||
<item name="appWidgetInnerRadius">8dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Android.AppWidgetContainer" parent="Theme.Android.AppWidgetContainerParent">
|
||||
<!-- Apply padding to avoid the content of the widget colliding with the rounded corners -->
|
||||
<item name="appWidgetPadding">8dp</item>
|
||||
</style>
|
||||
</resources>
|
13
android/app/src/main/res/xml/oreo_widget_info.xml
Normal file
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:description="@string/app_widget_description"
|
||||
android:initialKeyguardLayout="@layout/oreo_widget_medium"
|
||||
android:initialLayout="@layout/oreo_widget_medium"
|
||||
android:previewLayout="@layout/oreo_widget_medium"
|
||||
android:resizeMode="horizontal|vertical"
|
||||
android:targetCellWidth="5"
|
||||
android:targetCellHeight="1"
|
||||
android:updatePeriodMillis="0"
|
||||
android:widgetCategory="home_screen"
|
||||
tools:ignore="UnusedAttribute" />
|
|
@ -1,5 +1,4 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.example.rain">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<!-- The INTERNET permission is required for development. Specifically,
|
||||
the Flutter tool needs it to communicate with the running application
|
||||
to allow setting breakpoints, to provide hot reload, etc.
|
||||
|
|
|
@ -1,16 +1,3 @@
|
|||
buildscript {
|
||||
ext.kotlin_version = '1.7.10'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.2.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
||||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
|
@ -26,6 +13,6 @@ subprojects {
|
|||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
org.gradle.jvmargs=-Xmx1536M
|
||||
org.gradle.jvmargs=-Xmx4G
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.enableR8.fullMode = false
|
||||
|
|
|
@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
||||
|
|
|
@ -1,11 +1,25 @@
|
|||
include ':app'
|
||||
pluginManagement {
|
||||
def flutterSdkPath = {
|
||||
def properties = new Properties()
|
||||
file("local.properties").withInputStream { properties.load(it) }
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
return flutterSdkPath
|
||||
}()
|
||||
|
||||
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
|
||||
def properties = new Properties()
|
||||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||||
|
||||
assert localPropertiesFile.exists()
|
||||
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}
|
||||
|
||||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||||
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id "com.android.application" version "8.9.0" apply false
|
||||
id "org.jetbrains.kotlin.android" version "2.1.10" apply false
|
||||
}
|
||||
|
||||
include ":app"
|
||||
|
|
BIN
assets/icons/City.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
assets/icons/Design.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
assets/icons/Rain.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
assets/icons/Team.png
Normal file
After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 3 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 452 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 6.1 KiB |
BIN
assets/images/clear_day.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
assets/images/clear_night.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 4.2 KiB |
BIN
assets/images/cloudy.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
assets/images/cloudy_day.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
assets/images/cloudy_night.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/images/cold.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
assets/images/dew.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 4.7 KiB |