English | 中文
This project is an exercise in learning Flutter for personal growth and development.
To achieve specific design outcomes and meet the demands of daily development, one may employ the methods of configuring, modifying, combining pre-existing components, and customizing.
The design plans for this project can be found in the "design" directory. You may utilize these plans to practice with a specific goal in mind. Any implementation is solely based on personal comprehension and learning. Should there be any superior implementation strategies, I welcome the opportunity for discussion.
Some of the page effects are as follows:
If you find this project satisfactory, kindly show your support by giving it a Star or Fork. Rest assured, this project is being continuously maintained and any issues can be brought to our attention by submitting an Issue.
- MVP pattern
- State management using
provider
(version 6.x) - Network request encapsulation based on
dio
(version 5.x) - Integration testing and accessibility testing
- Support for dark mode
- Localization(Thanks to @ghedwards)
- Implementation of complex scrolling effects using
Sliver
series components - Location selection using AMap (supports Web)
- Encapsulation of common widgets handling
- Pull-to-refresh and load-more functionality
- Application update check
- PopupWindow
- QR code scanning functionality (using the qr_code_scanner plugin)
- Menu switching animations (circular expansion, 3D flip)
- Swipe-to-delete
- City selection
- Three-level linkage selection similar to JD's city selection
- Various custom dialogs
- Sticky header for lists
- Password input keyboard
- Verification code input box
- Custom simple calendar
- Line chart and pie charts
- Modularized route management
- More demos (ripple animation, scratch card, lottie)
- More detailed optimizations
You may download and experience it specifically by accessing the following links:
For the Android version, kindly click on the link provided: Download here, and enter the password: 111111
.
As for iOS, you will need to download and run the code on your own.
For web experience, please visit: https://simplezhli.github.io/flutter_deer/
1. Flutter version 3.24.0
2. Dart version 3.5.0
-
In debug mode, there may be some lagging, which is considered a normal occurrence. A satisfactory experience requires the creation of a release package. To create a release version for iOS, execute the command
flutter build ios
. For Android, execute the commandflutter build apk
. -
If there are any issues with the project's execution, please refer to the iOS issue summary and Android issue summary for possible solutions.
-
Due to certain plugin limitations, this project is only available for preview on Windows and macOS. Those interested may run and experience it themselves.
-
To view the functionality demonstration, execute the integration test command
flutter drive --target=test_driver/driver.dart
. -
Due to the abundance of pages, it may be difficult to match the design at first. However, I have added the relative path of the design in the code comments, which can be searched or located for the corresponding page. I hope this will be helpful to you.
-
This project uses the FlutterJsonBeanFactory plugin to generate Beans.
-
Web performance may be slower due to large resource files such as js and deployment on Github.
library | Functionality |
---|---|
dio | Networking library |
provider | State management |
flutter_2d_amap | 2D map from Amap |
cached_network_image | Image loading |
fluro | Routing management |
flutter_oktoast | Toast notifications |
common_utils | Common Dart utility library |
flutter_slidable | Swipe-to-delete |
flustars | Common Flutter utility library |
flutter_swiper | Flutter carousel component |
url_launcher | Plugin for launching URLs |
image_picker | Plugin for selecting images |
rxdart | Reactive extensions for Dart |
webview_flutter | WebView plugin |
keyboard_actions | Handling keyboard events |
azlistview | City selection list |
date_utils | Common date utility classes |
bezier_chart | Bezier chart |
sprintf | String formatting |
qr_code_scanner | Scanning QR codes |
intl | Localization |
device_info_plus | Getting device information |
vibration | Vibration |
lottie | Animation effects |
For details, please refer to the pubspec.yaml file.
-
Web support.
-
Migrate to null-safety.
-
Migrate to Navigator 2.0.
Copyright 2019 simplezhli
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.