├── .gitignore ├── .metadata ├── _config.yml ├── analysis_options.yaml ├── android ├── .project ├── .settings │ └── org.eclipse.buildship.core.prefs ├── app │ ├── .classpath │ ├── .project │ ├── .settings │ │ └── org.eclipse.buildship.core.prefs │ ├── build.gradle │ ├── google-services.json │ ├── key.jks │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── com │ │ │ └── flutter │ │ │ └── beer │ │ │ └── MainActivity.java │ │ └── res │ │ ├── drawable │ │ └── launch_background.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-ldpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── playstore-icon.png │ │ └── values │ │ └── styles.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── key.properties └── settings.gradle ├── assets ├── config.json └── imgs │ ├── avatar.png │ ├── cool.jpg │ ├── github.png │ ├── github_1.png │ └── github_2.png ├── docs └── widget │ ├── animate │ ├── animatedbuilder │ │ └── index.md │ ├── animatedcontainer │ │ └── index.md │ ├── animatedcrossfade │ │ └── index.md │ ├── animateddefaulttextstyle │ │ └── index.md │ ├── animatedliststate │ │ └── index.md │ ├── animatedmodalbarrier │ │ └── index.md │ ├── animatedopacity │ │ └── index.md │ ├── animatedphysicalmodel │ │ └── index.md │ ├── animatedpositioned │ │ └── index.md │ ├── animatedsize │ │ └── index.md │ ├── animatedwidget │ │ └── index.md │ ├── animatedwidgetbasestate │ │ └── index.md │ ├── animationcontroller │ │ └── index.md │ ├── decoratedboxtransition │ │ └── index.md │ ├── fadetransition │ │ └── index.md │ ├── hero │ │ └── index.md │ ├── positionedtransition │ │ └── index.md │ ├── rotationtransition │ │ └── index.md │ ├── scaletransition │ │ └── index.md │ ├── sizetransition │ │ └── index.md │ └── slidetransition │ │ └── index.md │ ├── bulletbox │ ├── alertdialog │ │ └── index.md │ ├── bottomsheet │ │ └── index.md │ ├── expansionpanel │ │ └── index.md │ ├── simpledialog │ │ └── index.md │ └── snackbar │ │ └── index.md │ ├── common │ ├── assetbundle │ │ └── index.md │ ├── buttonbar │ │ └── index.md │ ├── chip │ │ └── index.md │ ├── container │ │ └── index.md │ ├── divider │ │ └── index.md │ ├── flatbutton │ │ └── index.md │ ├── icon │ │ └── index.md │ ├── iconbutton │ │ └── index.md │ ├── image │ │ └── index.md │ ├── listtile │ │ └── index.md │ ├── placeholder │ │ └── index.md │ ├── raisedbutton │ │ └── index.md │ ├── rawimage │ │ └── index.md │ ├── stepper │ │ └── index.md │ ├── text │ │ └── index.md │ └── tooltip │ │ └── index.md │ ├── form │ ├── checkbox │ │ └── index.md │ ├── checkboxlisttile │ │ └── index.md │ ├── daypicker │ │ └── index.md │ ├── form │ │ └── index.md │ ├── formfield │ │ └── index.md │ ├── radio │ │ └── index.md │ ├── radiolisttile │ │ └── index.md │ ├── rawkeyboard │ │ └── index.md │ ├── slider │ │ └── index.md │ ├── switch │ │ └── index.md │ ├── switchlisttile │ │ └── index.md │ ├── textfield │ │ └── index.md │ └── textinput │ │ └── index.md │ ├── gestures │ ├── absorbpointer │ │ └── index.md │ ├── dismissible │ │ └── index.md │ ├── dragtarget │ │ └── index.md │ ├── gesturedetector │ │ └── index.md │ ├── ignorepointer │ │ └── index.md │ └── longpressdraggable │ │ └── index.md │ ├── navigator │ ├── appbar │ │ └── index.md │ ├── bottomnavigationbar │ │ └── index.md │ ├── drawer │ │ └── index.md │ ├── floatingactionbutton │ │ └── index.md │ ├── materialapp │ │ └── index.md │ ├── navigator │ │ └── index.md │ ├── pageview │ │ └── index.md │ ├── popupmenubutton │ │ └── index.md │ ├── scaffold │ │ └── index.md │ ├── tabbar │ │ └── index.md │ ├── tabbarview │ │ └── index.md │ └── widgetsapp │ │ └── index.md │ ├── regular │ ├── align │ │ ├── code.md │ │ └── index.md │ ├── aspectratio │ │ └── index.md │ ├── center │ │ ├── code.md │ │ └── index.md │ ├── column │ │ ├── code.md │ │ └── index.md │ ├── constrainedbox │ │ └── index.md │ ├── container │ │ ├── code.md │ │ └── index.md │ ├── fittedbox │ │ ├── code.md │ │ └── index.md │ ├── flow │ │ └── index.md │ ├── layoutbuilder │ │ └── index.md │ ├── listbody │ │ └── index.md │ ├── listview │ │ └── index.md │ ├── padding │ │ ├── code.md │ │ └── index.md │ ├── row │ │ ├── code.md │ │ └── index.md │ ├── stack │ │ └── index.md │ ├── table │ │ └── index.md │ └── wrap │ │ └── index.md │ ├── scrollview │ ├── customscrollview │ │ └── index.md │ ├── gridview │ │ └── index.md │ ├── listview │ │ ├── code.md │ │ └── index.md │ ├── nestedscrollview │ │ └── index.md │ ├── scrollable │ │ └── index.md │ ├── scrollbar │ │ └── index.md │ ├── scrollcontroller │ │ └── index.md │ └── singlechildscrollview │ │ └── index.md │ └── vision │ ├── backdropfilter │ └── index.md │ ├── clipoval │ └── index.md │ ├── clippath │ └── index.md │ ├── cliprect │ └── index.md │ ├── custompaint │ └── index.md │ ├── decoratedbox │ └── index.md │ ├── fractionaltranslation │ └── index.md │ ├── mediaquery │ └── index.md │ ├── opacity │ └── index.md │ ├── rotatedbox │ └── index.md │ ├── theme │ └── index.md │ └── transform │ └── index.md ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ ├── Icon-App-83.5x83.5@2x.png │ │ └── ItunesArtwork@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ ├── README.md │ │ ├── iTunesArtwork@1x.png │ │ ├── iTunesArtwork@2x.png │ │ └── iTunesArtwork@3x.png │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── GoogleService-Info.plist │ ├── Info.plist │ └── main.m ├── lib ├── components │ ├── example_comp.dart │ ├── expansion_tile.dart │ ├── markdown_comp.dart │ ├── updating_comp.dart │ ├── webview_comp.dart │ └── widget_comp.dart ├── config │ ├── color.dart │ ├── development.dart │ ├── index.dart │ ├── production.dart │ └── theme.dart ├── controller │ └── index.dart ├── http │ ├── index.dart │ └── loading.dart ├── lang │ ├── config.dart │ └── index.dart ├── main.dart ├── mock │ ├── index.dart │ └── login.dart ├── package │ ├── README.md │ └── router │ │ └── router.dart ├── page │ ├── app_login │ │ ├── index.dart │ │ └── text.dart │ ├── comment │ │ ├── details.dart │ │ └── index.dart │ ├── component │ │ └── tabs.dart │ ├── home.dart │ ├── library │ │ └── index.dart │ └── mine │ │ └── index.dart ├── plugin │ └── README.md ├── router │ ├── controller.dart │ ├── handles.dart │ └── index.dart ├── store │ ├── index.dart │ ├── index_for_provide.dart │ ├── models │ │ ├── author_state_model.dart │ │ ├── config_state_model.dart │ │ └── user_model.dart │ └── objects │ │ ├── author_info.dart │ │ ├── flutter_ui_info.dart │ │ ├── flutter_ui_issues.dart │ │ ├── github_resp_info.dart │ │ ├── issues_comment.dart │ │ ├── user_info.dart │ │ └── widget_info.dart ├── utils │ ├── analytics.dart │ ├── appVersion.dart │ ├── github.dart │ ├── loadAsset.dart │ ├── localStorage.dart │ ├── share.dart │ └── syntaxHighlighter.dart └── widget │ ├── animate │ ├── animatedbuilder │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedcontainer │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedcrossfade │ │ ├── demo.dart │ │ └── index.dart │ ├── animateddefaulttextstyle │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedliststate │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedmodalbarrier │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedopacity │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedphysicalmodel │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedpositioned │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedsize │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedwidget │ │ ├── demo.dart │ │ └── index.dart │ ├── animatedwidgetbasestate │ │ ├── demo.dart │ │ └── index.dart │ ├── animationcontroller │ │ ├── demo.dart │ │ └── index.dart │ ├── decoratedboxtransition │ │ ├── demo.dart │ │ └── index.dart │ ├── fadetransition │ │ ├── demo.dart │ │ └── index.dart │ ├── hero │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── positionedtransition │ │ ├── demo.dart │ │ └── index.dart │ ├── rotationtransition │ │ ├── demo.dart │ │ └── index.dart │ ├── scaletransition │ │ ├── demo.dart │ │ └── index.dart │ ├── sizetransition │ │ ├── demo.dart │ │ └── index.dart │ └── slidetransition │ │ ├── demo.dart │ │ └── index.dart │ ├── author_list.dart │ ├── bulletbox │ ├── alertdialog │ │ ├── demo.dart │ │ └── index.dart │ ├── bottomsheet │ │ ├── demo.dart │ │ └── index.dart │ ├── expansionPanel │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── simpledialog │ │ ├── demo.dart │ │ └── index.dart │ └── snackbar │ │ ├── demo.dart │ │ └── index.dart │ ├── common │ ├── assetbundle │ │ ├── demo.dart │ │ └── index.dart │ ├── buttonbar │ │ ├── demo.dart │ │ └── index.dart │ ├── chip │ │ ├── demo.dart │ │ └── index.dart │ ├── container │ │ ├── demo.dart │ │ └── index.dart │ ├── divider │ │ ├── demo.dart │ │ └── index.dart │ ├── flatbutton │ │ ├── demo.dart │ │ └── index.dart │ ├── icon │ │ ├── demo.dart │ │ └── index.dart │ ├── iconbutton │ │ ├── demo.dart │ │ └── index.dart │ ├── image │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── listtile │ │ ├── demo.dart │ │ └── index.dart │ ├── placeholder │ │ ├── demo.dart │ │ └── index.dart │ ├── raisedbutton │ │ ├── demo.dart │ │ └── index.dart │ ├── rawimage │ │ ├── demo.dart │ │ └── index.dart │ ├── stepper │ │ ├── demo.dart │ │ └── index.dart │ ├── text │ │ ├── demo.dart │ │ └── index.dart │ └── tooltip │ │ ├── demo.dart │ │ └── index.dart │ ├── form │ ├── checkbox │ │ ├── demo.dart │ │ └── index.dart │ ├── checkboxlisttile │ │ ├── demo.dart │ │ └── index.dart │ ├── daypicker │ │ ├── demo.dart │ │ └── index.dart │ ├── form │ │ ├── demo.dart │ │ └── index.dart │ ├── formfield │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── radio │ │ ├── demo.dart │ │ └── index.dart │ ├── radiolisttile │ │ ├── demo.dart │ │ └── index.dart │ ├── rawkeyboard │ │ ├── demo.dart │ │ └── index.dart │ ├── slider │ │ ├── demo.dart │ │ └── index.dart │ ├── switch │ │ ├── demo.dart │ │ └── index.dart │ ├── switchlisttile │ │ ├── demo.dart │ │ └── index.dart │ ├── textfield │ │ ├── demo.dart │ │ └── index.dart │ └── textinput │ │ ├── demo.dart │ │ └── index.dart │ ├── gestures │ ├── absorbpointer │ │ ├── demo.dart │ │ └── index.dart │ ├── dismissible │ │ ├── demo.dart │ │ └── index.dart │ ├── dragtarget │ │ ├── demo.dart │ │ └── index.dart │ ├── gesturedetector │ │ ├── demo.dart │ │ ├── demo_force_press.dart │ │ ├── demo_pan.dart │ │ ├── demo_scale.dart │ │ ├── demo_tap.dart │ │ └── index.dart │ ├── ignorepointer │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ └── longpressdraggable │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── navigator │ ├── appbar │ │ ├── demo.dart │ │ └── index.dart │ ├── bottomnavigationbar │ │ ├── demo.dart │ │ ├── demo_with_pageview.dart │ │ └── index.dart │ ├── drawer │ │ ├── demo.dart │ │ └── index.dart │ ├── floatingactionbutton │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── materialapp │ │ ├── demo.dart │ │ └── index.dart │ ├── navigator │ │ ├── demo.dart │ │ └── index.dart │ ├── pageview │ │ ├── demo.dart │ │ └── index.dart │ ├── popupmenubutton │ │ ├── demo.dart │ │ └── index.dart │ ├── scaffold │ │ ├── demo.dart │ │ └── index.dart │ ├── tabbar │ │ ├── demo.dart │ │ └── index.dart │ ├── tabbarview │ │ ├── demo.dart │ │ └── index.dart │ └── widgetsapp │ │ ├── demo.dart │ │ └── index.dart │ ├── regular │ ├── align │ │ ├── demo.dart │ │ └── index.dart │ ├── aspectratio │ │ ├── demo.dart │ │ └── index.dart │ ├── center │ │ ├── demo.dart │ │ └── index.dart │ ├── column │ │ ├── demo.dart │ │ ├── demo_expanded.dart │ │ └── index.dart │ ├── constrainedbox │ │ ├── demo.dart │ │ ├── demo_expand.dart │ │ └── index.dart │ ├── container │ │ ├── demo.dart │ │ └── index.dart │ ├── fittedbox │ │ ├── demo.dart │ │ └── index.dart │ ├── flow │ │ ├── demo.dart │ │ └── index.dart │ ├── index.dart │ ├── layoutbuilder │ │ ├── demo.dart │ │ └── index.dart │ ├── listbody │ │ ├── demo.dart │ │ └── index.dart │ ├── listview │ │ ├── demo.dart │ │ ├── demo_builder.dart │ │ ├── demo_custom.dart │ │ ├── demo_separated.dart │ │ └── index.dart │ ├── padding │ │ ├── demo.dart │ │ └── index.dart │ ├── row │ │ ├── demo.dart │ │ ├── demo_expanded.dart │ │ └── index.dart │ ├── stack │ │ ├── demo.dart │ │ └── index.dart │ ├── table │ │ ├── demo.dart │ │ └── index.dart │ └── wrap │ │ ├── demo.dart │ │ └── index.dart │ ├── scrollview │ ├── customscrollview │ │ ├── demo_custom_scrollview.dart │ │ ├── demo_custom_scrollview_floaing_snap.dart │ │ ├── demo_custom_scrollview_floating.dart │ │ ├── demo_custom_scrollview_pinned.dart │ │ └── index.dart │ ├── gridview │ │ ├── demo_builder.dart │ │ ├── demo_count.dart │ │ ├── demo_custom.dart │ │ ├── demo_extent.dart │ │ └── index.dart │ ├── index.dart │ ├── listview │ │ ├── demo.dart │ │ └── index.dart │ ├── nestedscrollview │ │ ├── demo.dart │ │ └── index.dart │ ├── scrollable │ │ ├── demo.dart │ │ └── index.dart │ ├── scrollbar │ │ ├── demo.dart │ │ └── index.dart │ ├── scrollcontroller │ │ ├── demo.dart │ │ └── index.dart │ └── singlechildscrollview │ │ ├── demo_single_child_scrollview.dart │ │ ├── demo_single_child_scrollview_overflow.dart │ │ └── index.dart │ └── vision │ ├── backdropfilter │ ├── demo.dart │ └── index.dart │ ├── clipoval │ ├── demo.dart │ └── index.dart │ ├── clippath │ ├── demo.dart │ └── index.dart │ ├── cliprect │ ├── demo.dart │ └── index.dart │ ├── custompaint │ ├── demo.dart │ └── index.dart │ ├── decoratedbox │ ├── demo.dart │ └── index.dart │ ├── fractionaltranslation │ ├── demo.dart │ └── index.dart │ ├── index.dart │ ├── mediaquery │ ├── demo.dart │ └── index.dart │ ├── opacity │ ├── demo.dart │ └── index.dart │ ├── rotatedbox │ ├── demo.dart │ └── index.dart │ ├── theme │ ├── demo.dart │ └── index.dart │ └── transform │ ├── demo.dart │ └── index.dart ├── locale ├── en.json └── zh.json ├── pubspec.yaml ├── readme.md ├── readme ├── 1.0.2.png ├── 1.0.2 │ ├── 1.jpg │ ├── 2.jpg │ ├── 3.jpg │ ├── 4.jpg │ ├── 5.jpg │ └── 6.jpg ├── apk.png ├── background.md ├── develop.md ├── flutter_ui2.gif ├── flutter_ui3.gif ├── git.md ├── google_play.png ├── pr.md ├── qq-qrcode.png ├── qq.md ├── v1.0.0_preview.md └── widget_progress.md ├── res └── values │ └── strings_en.arb └── version.json /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 5391447fae6209bb21a89e6a5a6583cac1af9b4b 8 | channel: beta 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # analyzer: 2 | # errors: 3 | # mixin_inherits_from_not_object: ignore -------------------------------------------------------------------------------- /android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android 4 | Project android created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir= 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/app/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | app 4 | Project app created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.buildship.core.gradleprojectbuilder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.buildship.core.gradleprojectnature 22 | 23 | 24 | -------------------------------------------------------------------------------- /android/app/.settings/org.eclipse.buildship.core.prefs: -------------------------------------------------------------------------------- 1 | connection.project.dir=.. 2 | eclipse.preferences.version=1 3 | -------------------------------------------------------------------------------- /android/app/key.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/key.jks -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | #Flutter Wrapper 2 | -keep class io.flutter.app.** { *; } 3 | -keep class io.flutter.plugin.** { *; } 4 | -keep class io.flutter.util.** { *; } 5 | -keep class io.flutter.view.** { *; } 6 | -keep class io.flutter.** { *; } 7 | -keep class io.flutter.plugins.** { *; } -------------------------------------------------------------------------------- /android/app/src/main/java/com/flutter/beer/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.flutter.beer; 2 | 3 | import android.os.Bundle; 4 | import io.flutter.app.FlutterActivity; 5 | import io.flutter.plugins.GeneratedPluginRegistrant; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | GeneratedPluginRegistrant.registerWith(this); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/playstore-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/android/app/src/main/res/playstore-icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | flutter ui 4 | 9 | 10 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip 7 | -------------------------------------------------------------------------------- /android/key.properties: -------------------------------------------------------------------------------- 1 | storePassword=666666 2 | keyPassword=666666 3 | keyAlias=key 4 | storeFile=key.jks -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /assets/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1.0 3 | } -------------------------------------------------------------------------------- /assets/imgs/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/assets/imgs/avatar.png -------------------------------------------------------------------------------- /assets/imgs/cool.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/assets/imgs/cool.jpg -------------------------------------------------------------------------------- /assets/imgs/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/assets/imgs/github.png -------------------------------------------------------------------------------- /assets/imgs/github_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/assets/imgs/github_1.png -------------------------------------------------------------------------------- /assets/imgs/github_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/assets/imgs/github_2.png -------------------------------------------------------------------------------- /docs/widget/animate/animatedbuilder/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedcontainer/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedcrossfade/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animateddefaulttextstyle/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedliststate/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedmodalbarrier/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedopacity/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedphysicalmodel/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedpositioned/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedsize/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedwidget/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/animatedwidgetbasestate/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/decoratedboxtransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/fadetransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/hero/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/positionedtransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/rotationtransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/scaletransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/sizetransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/animate/slidetransition/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/bulletbox/alertdialog/index.md: -------------------------------------------------------------------------------- 1 | ## **AlertDialog** 2 | 3 | > 4 | AlertDialog向用户传递信息的弹出框,警报对话框 5 | * 一般使用在通知用户需要确认的情况,具有可选标题和可选的操作列表 6 | * 对于为用户提供多个选项之间选择的对话框,请考虑使用SimpleDialog 7 | * 如果内容太大无法放入屏幕,请优先考虑使用SingleChildScrollView来避免内容溢出 8 | * 需要注意,AlertDialog使用child大小来调节自身大小,使用如ListView,GridView和CustomScrollView将无法工作 9 | 10 | ### 构造方法 11 | ``` dart 12 | AlertDialog({ 13 | Key key, 14 | this.title, 15 | this.titlePadding, 16 | this.content, 17 | this.contentPadding = const EdgeInsets.fromLTRB(24.0, 20.0, 24.0, 24.0), 18 | this.actions, 19 | this.semanticLabel, 20 | this.shape, 21 | }) 22 | ``` 23 | 24 | ### 属性介绍 25 | * title: 对话框的标题(可选) 26 | * titlePadding: 标题的周围填充 27 | * content: 对话框的(可选)内容以较浅的字体显示在对话框的中央 28 | * contentPadding: 内容的周围填充 29 | * action: 显示在对话框底部的可选操作集 30 | * semanticLabel: 可访问性框架用于在打开和关闭对话框时通知屏幕转换的对话框的语义标签 31 | * shape: 对话框边框的形状 -------------------------------------------------------------------------------- /docs/widget/bulletbox/bottomsheet/index.md: -------------------------------------------------------------------------------- 1 | ## **BottomSheet** 2 | 3 | > 4 | 底部菜单,通常情况下分享操作界面使用比较多 5 | * 显示BottomSheet我们可以通过调用:showBottomSheet或者showModalBottomSheet方法,showBottomSheet是从新打开了一个界面来显示,showModalBottomSheet是直接在当前界面的下面来显示 6 | * 两个方法都需要传入一个context和WidgetBuilder 7 | 8 | ### 构造方法 9 | ``` dart 10 | showModalBottomSheet({ 11 | @required BuildContext context, 12 | @required WidgetBuilder builder, 13 | }) 14 | showBottomSheet({ 15 | @required BuildContext context, 16 | @required WidgetBuilder builder, 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | context:上下文 22 | builder: 构造器 -------------------------------------------------------------------------------- /docs/widget/bulletbox/expansionpanel/index.md: -------------------------------------------------------------------------------- 1 | ## **ExpansionPanel** 2 | 3 | > 4 | 扩展面板,包含一个标题和一个正文,可以展开或折叠,面板正文在展开时可见 5 | * ExpansionPanel不能单独使用,只能配合ExpansionPanelList使用 6 | * ExpansionPanelList必须配合可以滑动的组件才可以使用 7 | 8 | ### ExpansionPanelList构造方法 9 | ``` dart 10 | ExpansionPanelList({ 11 | Key key, 12 | this.children = const [], 13 | this.expansionCallback, 14 | this.animationDuration = kThemeAnimationDuration, 15 | }) 16 | ``` 17 | 18 | ### ExpansionPanel构造方法 19 | ``` dart 20 | ExpansionPanel({ 21 | @required this.headerBuilder, 22 | @required this.body, 23 | this.isExpanded = false 24 | }) 25 | ``` 26 | 27 | ### ExpansionPanelList属性介绍 28 | * children:ExpansionPanel内容 29 | * expansionCallback:点击展开关闭面板回调函数 30 | * animationDuration:展开面板时间 31 | 32 | ### ExpansionPanel属性介绍 33 | * headerBuilder:标题构造器 34 | * body:内容区域 35 | * isExpanded:是否展开 36 | -------------------------------------------------------------------------------- /docs/widget/bulletbox/simpledialog/index.md: -------------------------------------------------------------------------------- 1 | ## **SimpleDialog** 2 | 3 | > 4 | SimpleDialog用于向用户传递确定信息并提供多个选项之间的选择的弹出层 5 | * 对于通知用户情况的弹出框,请考虑使用AlertDialog 6 | 7 | ### 构造方法 8 | ``` dart 9 | SimpleDialog({ 10 | Key key, 11 | this.title, 12 | this.titlePadding = const EdgeInsets.fromLTRB(24.0, 24.0, 24.0, 0.0), 13 | this.children, 14 | this.contentPadding = const EdgeInsets.fromLTRB(0.0, 12.0, 0.0, 16.0), 15 | this.semanticLabel, 16 | this.shape, 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | * title: 对话框的标题(可选) 22 | * titlePadding: 标题的周围填充 23 | * children: 对话框的内容Widget 24 | * contentPadding: 内容的周围填充 25 | * semanticLabel: 可访问性框架用于在打开和关闭对话框时通知屏幕转换的对话框的语义标签 26 | * shape: 对话框边框的形状 -------------------------------------------------------------------------------- /docs/widget/bulletbox/snackbar/index.md: -------------------------------------------------------------------------------- 1 | ## **SnackBar** 2 | 3 | > 4 | SnackBar 底部快捷提示,类似Toast,会自动隐藏 5 | * 我们并不能直接显示SnackBar,我们可以借助于Scaffold.of(context).showSnackBar()来显示一个SnackBar 6 | * 值得注意的是这个context必须不能是Scaffold节点下的context,因为Scaffold.of()方法需要从Widget树中去找到Scaffold的Context,所以如果直接在Scaffold中使用showSnackBar,需要在外层包括上Builder Widget,这个Builder不做任何的其他操作,只不过把Widget树往下移了一层而已 7 | 8 | ### 构造方法 9 | ``` dart 10 | SnackBar({ 11 | Key key, 12 | @required this.content, 13 | this.backgroundColor, 14 | this.action, 15 | this.duration = _kSnackBarDisplayDuration, 16 | this.animation, 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | * content: SnackBar要显示的内容 22 | * backgroundColor: SnackBar背景颜色 23 | * action: 用户可以执行的操作 24 | * duration: 显示SnackBar的时间 25 | * animation: SnackBar的显示与隐藏动画 -------------------------------------------------------------------------------- /docs/widget/common/assetbundle/index.md: -------------------------------------------------------------------------------- 1 | ## **AssetBundle** 2 | > 抽象类,资源读取 3 | 4 | #### 使用 5 | ``` 6 | import 'package:flutter/services.dart' show rootBundle; 7 | 8 | getText() async { 9 | String text = await rootBundle.loadString('locale/zh.json'); 10 | print('text $text'); 11 | } 12 | 13 | ``` -------------------------------------------------------------------------------- /docs/widget/common/buttonbar/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/common/container/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/common/divider/index.md: -------------------------------------------------------------------------------- 1 | ## **Divider** 2 | 3 | > 4 | 分割线 5 | * 常用使用Container包裹一层厚,使用padding可以构造出你需要的长度水平线 6 | 7 | ### 构造方法 8 | ``` dart 9 | Divider({ 10 | Key key, 11 | this.height = 16.0, 12 | this.indent = 0.0, 13 | this.color 14 | }) 15 | ``` 16 | 17 | ### 属性介绍 18 | * height: 分割线的高度范围 19 | * indent: 分割线左侧的空白空间量 20 | * color: 线条颜色 -------------------------------------------------------------------------------- /docs/widget/common/flatbutton/index.md: -------------------------------------------------------------------------------- 1 | ## **FlatButton** 2 | 3 | > 4 | 文本标签按钮 5 | * onPressed回调为null,则该按钮将被禁用 6 | 7 | ### 构造方法 8 | ``` dart 9 | FlatButton({ 10 | Key key, 11 | @required VoidCallback onPressed, 12 | ValueChanged onHighlightChanged, 13 | ButtonTextTheme textTheme, 14 | Color textColor, 15 | Color disabledTextColor, 16 | Color color, 17 | Color disabledColor, 18 | Color highlightColor, 19 | Color splashColor, 20 | Brightness colorBrightness, 21 | EdgeInsetsGeometry padding, 22 | ShapeBorder shape, 23 | Clip clipBehavior = Clip.none, 24 | MaterialTapTargetSize materialTapTargetSize, 25 | @required Widget child, 26 | }) 27 | ``` 28 | 29 | ### 属性介绍 30 | * onPressed: 点击回调 31 | * textColor:文本颜色 32 | * disabledTextColor:禁用文本颜色 33 | * color:按钮颜色 34 | * disabledColor: 禁用按钮颜色 35 | * highlightColor:长按按钮颜色 36 | * child:按钮中的Widget -------------------------------------------------------------------------------- /docs/widget/common/icon/index.md: -------------------------------------------------------------------------------- 1 | ## **Icon** 2 | 3 | > 4 | 使用IconData中描述的小图标,flutter大概内置了1000+个icon 5 | ### 构造方法 6 | ``` dart 7 | Icon(this.icon, { 8 | Key key, 9 | this.size, 10 | this.color, 11 | this.semanticLabel, 12 | this.textDirection, 13 | }) 14 | ``` 15 | 16 | ### 属性介绍 17 | * this.icon: IconData对象,必须传入 18 | * size:图标大小 19 | * color:图标颜色 20 | * semanticLabel:图标的语义标签 21 | * textDirection:渲染图标的文本方向 -------------------------------------------------------------------------------- /docs/widget/common/iconbutton/index.md: -------------------------------------------------------------------------------- 1 | ## **IconButton** 2 | > 3 | 图标按钮,通过填充颜色(墨水)对触摸做出反应 4 | 5 | ### 构造方法 6 | ``` dart 7 | IconButton({ 8 | Key key, 9 | this.iconSize = 24.0, 10 | this.padding = const EdgeInsets.all(8.0), 11 | this.alignment = Alignment.center, 12 | @required this.icon, 13 | this.color, 14 | this.highlightColor, 15 | this.splashColor, 16 | this.disabledColor, 17 | @required this.onPressed, 18 | this.tooltip 19 | }) 20 | ``` 21 | 22 | ### 属性介绍 23 | * iconSize = 24.0:图标大小 24 | * padding = const EdgeInsets.all(8.0):按钮图标周围的填充 25 | * alignment = Alignment.center:图标对齐方式 26 | * icon:图标 27 | * color:图标颜色 28 | * highlightColor:按钮处于按下时按钮的辅助颜色 29 | * splashColor:按钮处于按下状态时按钮颜色 30 | * disabledColor:图标被禁用时按钮内图标的颜色 31 | * onPressed:点击回调 32 | * tooltip:长按文本提示 -------------------------------------------------------------------------------- /docs/widget/common/listtile/index.md: -------------------------------------------------------------------------------- 1 | ## **ListTile** 2 | > 3 | 单个固定高度的行,通常包含一些文本和前导或者尾随的图标,通常在ListView中使用 4 | 5 | ### 构造方法 6 | ``` dart 7 | ListTile({ 8 | Key key, 9 | this.leading, 10 | this.title, 11 | this.subtitle, 12 | this.trailing, 13 | this.isThreeLine = false, 14 | this.dense, 15 | this.contentPadding, 16 | this.enabled = true, 17 | this.onTap, 18 | this.onLongPress, 19 | this.selected = false, 20 | }) 21 | ``` 22 | 23 | ### 属性介绍 24 | 25 | * leading:显示左侧的小组件 26 | * title:标题 27 | * subtitle:子标题 28 | * trailing:显示右侧的小组件 29 | * isThreeLine = false:是否显示三行文本 30 | * dense:是否垂直密集显示 31 | * contentPadding:ListTile的内部填充 32 | * enabled = true:是否是交互式的 33 | * onTap:点击时的回调 34 | * onLongPress:长按时的回调 35 | * selected = false:图标和文本是否以相同颜色呈现 36 | -------------------------------------------------------------------------------- /docs/widget/common/placeholder/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/common/rawimage/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/common/stepper/index.md: -------------------------------------------------------------------------------- 1 | ## **Stepper** 2 | 3 | > 4 | 一个步骤小控件,通过一系列步骤显示进度,对于表单的情况,Stepper特别有用,可以通过控制需要完成多个步骤才能提交的表单 5 | 6 | ### 构造方法 7 | ``` dart 8 | Stepper({ 9 | Key key, 10 | @required this.steps, 11 | this.physics, 12 | this.type = StepperType.vertical, 13 | this.currentStep = 0, 14 | this.onStepTapped, 15 | this.onStepContinue, 16 | this.onStepCancel, 17 | this.controlsBuilder, 18 | }) 19 | ``` 20 | 21 | ### 属性介绍 22 | * steps: Stepper的内容,包含标题,副标题,内容 23 | * physics: Stepper滚动视图应如何响应用户输入 24 | * type = StepperType.vertical: 确定Stepper的布局类型 25 | * currentStep: 当前步骤索引,内容被显示 26 | * onStepTapped: step被点击时的回调 27 | * onStepContinue: 点击 继续 按钮时的回调 28 | * onStepCancel: 点击 取消 按钮时的回调 29 | * controlsBuilder: 用于创建自定义控件的回调 -------------------------------------------------------------------------------- /docs/widget/common/text/index.md: -------------------------------------------------------------------------------- 1 | ## **Text** 2 | 3 | > 4 | 单一样式的文本,文本可多行显示,也可能全部显示在同一行上 5 | * 默认会继承最接近控件的DefaultTextStyle 6 | * 最基本的文本组件 7 | 8 | ### 构造方法 9 | 10 | ``` dart 11 | Text(this.data, { 12 | Key key, 13 | this.style, 14 | this.textAlign, 15 | this.textDirection, 16 | this.locale, 17 | this.softWrap, 18 | this.overflow, 19 | this.textScaleFactor, 20 | this.maxLines, 21 | this.semanticsLabel, 22 | }) 23 | ``` 24 | 25 | ### 属性介绍 26 | * data: Text显示的文本,必选参数 27 | * style: 文本样式 28 | * textAlign: 文本对齐方式 29 | * textDirection: 文本显示方向 30 | * maxLines: 文本最多显示几行 31 | * overflow: 文本溢出显示的截断方式 32 | * textScaleFactor: 文本缩放比例 33 | -------------------------------------------------------------------------------- /docs/widget/common/tooltip/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/form/checkbox/index.md: -------------------------------------------------------------------------------- 1 | ## **CheckBox** 2 | 3 | > 4 | 复选框 5 | * 复选框本身不保持任何状态 6 | * 当复选框的状态发生变化时,窗口小部件会调用onChanged回调 7 | * 大多数使用复选框的小部件将侦听onChanged回调并使用新值重建复选框以更新复选框的可视外观 8 | 9 | ### 构造方法 10 | ``` dart 11 | Checkbox({ 12 | Key key, 13 | @required this.value, 14 | this.tristate = false, 15 | @required this.onChanged, 16 | this.activeColor, 17 | this.materialTapTargetSize, 18 | }) 19 | ``` 20 | 21 | ### 属性介绍 22 | * value: 复选框的状态 23 | * tristate: 当tristate为true,则复选框可以选择显示三个值 - true,false和null,当value为null时,将显示破折号。默认情况下, tristate为false,复选框的值必须为true或false 24 | * onChanged: 点击复选框的回调函数 25 | * activeColor: 选中此复选框时要使用的颜色 26 | * materialTapTargetSize: 配置点击目标的最小尺寸 27 | -------------------------------------------------------------------------------- /docs/widget/form/checkboxlisttile/index.md: -------------------------------------------------------------------------------- 1 | ## **CheckboxListTile** 2 | 3 | > 4 | 带有标签的复选框 5 | 6 | ### 构造方法 7 | ``` dart 8 | CheckboxListTile({ 9 | Key key, 10 | @required this.value, 11 | @required this.onChanged, 12 | this.activeColor, 13 | this.title, 14 | this.subtitle, 15 | this.isThreeLine = false, 16 | this.dense, 17 | this.secondary, 18 | this.selected = false, 19 | this.controlAffinity = ListTileControlAffinity.platform, 20 | }) 21 | ``` 22 | 23 | ### 属性介绍 24 | * value: 复选框选择状态 25 | * onChanged: 点击复选框的回调函数 26 | * activeColor: 选中此复选框时要使用的颜色 27 | * title: 标题 28 | * subtitle: 子标题 29 | * isThreeLine: 是否显示三行文本 30 | * dense: 是否垂直密集显示 31 | * secondary: 显示复选框一侧的小组件 32 | * selected: 是否使用activeColor渲染图标和文本 33 | * controlAffinity: 相对于文本放置控件位置 -------------------------------------------------------------------------------- /docs/widget/form/daypicker/index.md: -------------------------------------------------------------------------------- 1 | ## **DatePicker** 2 | 3 | > 4 | 显示给定月份的日期并允许选择一天 5 | * 日期选择器很少直接使用,请考虑使用 showDatePicker 或者 showTimePicker,它会创建一个日期/时间选择器对话框 6 | 7 | ### showDatePicker构造方法 8 | ``` dart 9 | showDatePicker({ 10 | @required BuildContext context, 11 | @required DateTime initialDate, 12 | @required DateTime firstDate, 13 | @required DateTime lastDate, 14 | SelectableDayPredicate selectableDayPredicate, 15 | DatePickerMode initialDatePickerMode = DatePickerMode.day, 16 | Locale locale, 17 | TextDirection textDirection, 18 | TransitionBuilder builder, 19 | }) 20 | ``` 21 | 22 | ### showTimePicker构造方法 23 | ``` dart 24 | showTimePicker({ 25 | @required BuildContext context, 26 | @required TimeOfDay initialTime, 27 | TransitionBuilder builder, 28 | }) 29 | ``` 30 | 31 | ### 属性介绍 32 | * context: 上下文 33 | * initialDate: 初始时间 34 | * firstDate: 设置选择的最早时间 35 | * lastDate: 设置选择的最晚时间 36 | -------------------------------------------------------------------------------- /docs/widget/form/form/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** 2 | -------------------------------------------------------------------------------- /docs/widget/form/formfield/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** 2 | -------------------------------------------------------------------------------- /docs/widget/form/radio/index.md: -------------------------------------------------------------------------------- 1 | ## **Radio** 2 | 3 | > 4 | 单选按钮 5 | 6 | ### 构造方法 7 | ``` dart 8 | Radio({ 9 | Key key, 10 | @required this.value, 11 | @required this.groupValue, 12 | @required this.onChanged, 13 | this.activeColor, 14 | this.materialTapTargetSize, 15 | }) 16 | ``` 17 | 18 | ### 属性介绍 19 | * value:单选按钮的值 20 | * groupValue:此组单选按钮的当前选定值,当value=groupValue时表示该按钮被选中 21 | * onChanged:选择单选按钮时的回调 22 | * activeColor:选中该按钮的颜色 -------------------------------------------------------------------------------- /docs/widget/form/radiolisttile/index.md: -------------------------------------------------------------------------------- 1 | ## **RadioListTile** 2 | 3 | > 4 | 带标签的单选按钮 5 | 6 | ### 构造方法 7 | ``` dart 8 | RadioListTile({ 9 | Key key, 10 | @required this.value, 11 | @required this.groupValue, 12 | @required this.onChanged, 13 | this.activeColor, 14 | this.title, 15 | this.subtitle, 16 | this.isThreeLine = false, 17 | this.dense, 18 | this.secondary, 19 | this.selected = false, 20 | this.controlAffinity = ListTileControlAffinity.platform, 21 | }) 22 | ``` 23 | 24 | ### 属性介绍 25 | * value:单选按钮的值 26 | * groupValue:此组单选按钮的当前选定值,当value=groupValue时表示该按钮被选中 27 | * onChanged:选择单选按钮时的回调 28 | * activeColor:选中该按钮的颜色 29 | * title: 标题 30 | * subtitle: 子标题 31 | * isThreeLine: 是否显示三行文本 32 | * dense: 是否垂直密集显示 33 | * secondary: 显示单选按钮一侧的小组件 34 | * selected: 是否使用activeColor渲染图标和文本 35 | * controlAffinity: 相对于文本放置控件位置 -------------------------------------------------------------------------------- /docs/widget/form/rawkeyboard/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** 2 | -------------------------------------------------------------------------------- /docs/widget/form/slider/index.md: -------------------------------------------------------------------------------- 1 | ## **Slider** 2 | 3 | > 4 | Silder用来选择连续性的或者非连续性的数据 5 | 6 | ### 构造方法 7 | ``` dart 8 | Slider({ 9 | Key key, 10 | @required this.value, 11 | @required this.onChanged, 12 | this.onChangeStart, 13 | this.onChangeEnd, 14 | this.min = 0.0, 15 | this.max = 1.0, 16 | this.divisions, 17 | this.label, 18 | this.activeColor, 19 | this.inactiveColor, 20 | this.semanticFormatterCallback, 21 | }) 22 | ``` 23 | 24 | ### 属性介绍 25 | * value:Silder当前值 26 | * onChanged:滑块状态发生变化时进行回调 27 | * onChangeStart:滑块状态刚发生变化时的回调 28 | * onChangeEnd:滑块状态变化结束时的回调 29 | * min:用户可以选择的最小值 30 | * max:用户可以选择的最大值 31 | * divisions:将silder划分为几份 32 | * label:滑块处于活动状态时显示在滑块上方的标签 33 | * activeColor:用于滑块轨道中活动部分的颜色 34 | * inactiveColor:滑块轨道的非活动部分的颜色 35 | 36 | -------------------------------------------------------------------------------- /docs/widget/form/switch/index.md: -------------------------------------------------------------------------------- 1 | ## **Switch** 2 | 3 | > 4 | Switch是切换按钮控件,通常用于设置的选项里 5 | 6 | ### 构造方法 7 | ``` dart 8 | Switch({ 9 | Key key, 10 | @required this.value, 11 | @required this.onChanged, 12 | this.activeColor, 13 | this.activeTrackColor, 14 | this.inactiveThumbColor, 15 | this.inactiveTrackColor, 16 | this.activeThumbImage, 17 | this.inactiveThumbImage, 18 | this.materialTapTargetSize, 19 | this.dragStartBehavior = DragStartBehavior.start, 20 | }) 21 | ``` 22 | 23 | ### 属性介绍 24 | * value: true:开 false:关 25 | * onChanged: 变化时回调 26 | * activeColor: 打开状态下颜色 27 | * activeTrackColor: 打开状态下track颜色 28 | * inactiveThumbColor: 关闭状态thumb颜色 29 | * inactiveTrackColor: 关闭状态track颜色 30 | * activeThumbImage: 打开状态下thumb图片 31 | * inactiveThumbImage: 关闭状态thumb图片 32 | * materialTapTargetSize: 配置点击目标的最小尺寸 33 | * dragStartBehavior: 确定处理拖动开始行为的方式 -------------------------------------------------------------------------------- /docs/widget/form/textinput/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** 2 | -------------------------------------------------------------------------------- /docs/widget/gestures/absorbpointer/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/gestures/dismissible/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/gestures/dragtarget/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/gestures/ignorepointer/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/navigator/appbar/index.md: -------------------------------------------------------------------------------- 1 | ## **AppBar** 2 | > 创建导航栏, 3 | 4 | ### 构造函数 5 | ``` 6 | AppBar({ 7 | Key key, 8 | Widget leading, 9 | bool automaticallyImplyLeading: true, 10 | Widget title, 11 | List actions, 12 | Widget flexibleSpace, 13 | PreferredSizeWidget bottom, 14 | double elevation, 15 | Color backgroundColor, 16 | Brightness brightness, 17 | IconThemeData iconTheme, 18 | TextTheme textTheme, 19 | bool primary: true, 20 | bool centerTitle, 21 | double titleSpacing: NavigationToolbar.kMiddleSpacing, 22 | double toolbarOpacity: 1.0, 23 | double bottomOpacity: 1.0 24 | }) 25 | ``` 26 | 27 | ### 属性介绍 28 | - leading: 导航栏左侧图标 29 | - title: 导航栏标题 30 | - actions: 导航栏右侧扩展图标,可添加PopupMenuButton,点开有下拉展开更多按钮。 31 | - automaticallyImplyLeading: 默认true, 当有上一级页面时,默认显示back按钮 32 | - bottom: 通过与Tabbar使用 -------------------------------------------------------------------------------- /docs/widget/navigator/materialapp/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/navigator/navigator/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/navigator/pageview/index.md: -------------------------------------------------------------------------------- 1 | ## **PageView** 2 | > 创建一个整屏滚动的滚动列表,逐页滚动 3 | 4 | 5 | ### 构造函数 6 | ``` 7 | PageView({ 8 | Key key, 9 | Axis scrollDirection: Axis.horizontal, 10 | bool reverse: false, 11 | PageController controller, 12 | ScrollPhysics physics, 13 | bool pageSnapping: true, 14 | ValueChanged onPageChanged, 15 | List children: const [], 16 | DragStartBehavior dragStartBehavior: DragStartBehavior.down 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | - children:页面列表,每个子元素对应一个当前页。 22 | - scrollDirection: Axis.horizontal/Axis.vertical, 默认是水平方向,可选择垂直方向滚动 23 | - reverse: 滚动方向取反操作 24 | - controller: 操作页面滚动行为类,可以通过PageController实例后的对象进行指定页面跳转,可携带特效跳转等。PageController.jumpToPage(index) 25 | - physics: 滚动属性,可参考滚动类别中的gridview等相近属性介绍 26 | - pageSnapping: 默认true,切换时,自动逐页跳转。当自定义滚动行为时,可设置为false,禁止页面捕获。 27 | - onPageChanged: 页面切换时,回调函数,返回页面下标值 28 | -------------------------------------------------------------------------------- /docs/widget/navigator/popupmenubutton/index.md: -------------------------------------------------------------------------------- 1 | ## **PopupMenuButton** 2 | 3 | ### 构造函数 4 | ``` 5 | PopupMenuButton({ 6 | Key key, 7 | @required PopupMenuItemBuilder itemBuilder, 8 | T initialValue, 9 | PopupMenuItemSelected onSelected, 10 | PopupMenuCanceled onCanceled, 11 | String tooltip, 12 | double elevation: 8.0, 13 | EdgeInsetsGeometry padding: const EdgeInsets.all(8.0), 14 | Widget child, 15 | Icon icon, 16 | Offset offset: Offset.zero 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | - itemBuilder: (_) => { return [PopupMenuItem(), PopupMenuItem(),]} 22 | > PopupMenuItem: 菜单子组件 23 | ``` 24 | PopupMenuItem({ 25 | Key key, 26 | T value, 27 | bool enabled: true, 28 | double height: _kMenuItemHeight, 29 | @required Widget child 30 | }) 31 | ``` 32 | - onSelected: 选中后返回PopupMenuItem中value的值 33 | - child: 有默认图标,可以修改为其它显示内容。 34 | 35 | -------------------------------------------------------------------------------- /docs/widget/navigator/tabbar/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/navigator/tabbarview/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/navigator/widgetsapp/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/regular/align/index.md: -------------------------------------------------------------------------------- 1 | ## **Align** 2 | > 3 | 对齐控件,能将子控件向所指定的方向对齐,并根据子级的大小自行调整自己的大小 4 | 5 | ### 构造方法 6 | ``` dart 7 | Align({ 8 | Key key, 9 | this.alignment = Alignment.center, 10 | this.widthFactor, 11 | this.heightFactor, 12 | Widget child 13 | }) 14 | ``` 15 | 16 | ### 属性介绍 17 | * alignment: 对齐方式,一般会使用系统默认提供的9种方式, Alignment.topLeft/topCenter/topRight/centerLeft/center/centerRight/bottomLeft/bottomCenter/bottomRight,也可以通过设置Alignment(数值,数值)来对齐,数值范围-1.0-1.0 18 | * widthFactor/heightFactor: 当widthFactor和heightFactor为null的时候,Align会调整到child的尺寸,当widthFactor或者heightFactor不为null的时候,Aligin会根据factor属性,扩展自己的尺寸,例如设置widthFactor为2.0的时候,那么,Align的宽度将会是child的两倍 19 | * child: Align中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/aspectratio/index.md: -------------------------------------------------------------------------------- 1 | ## **AspectRatio** 2 | 3 | > 4 | 将子控件调整为特定宽高比的控件 5 | * AspectRatio 首先会尝试布局约束的最大宽度,widget的高度是通过给定的宽度和宽高比率来决定的 6 | * 对于需要缩放调整位置的,一般是对图片的处理 7 | 8 | ### 构造方法 9 | ``` dart 10 | AspectRatio({ 11 | Key key, 12 | @required this.aspectRatio, 13 | Widget child 14 | }) 15 | ``` 16 | 17 | ### 属性介绍 18 | * aspectRatio: 宽高比,如1.5,宽度是高度的1.5倍 19 | * child: AspectRatio中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/center/index.md: -------------------------------------------------------------------------------- 1 | ## **Center** 2 | 3 | > 4 | 将child置于中心的控件 5 | * Center继承自Align,只不过是将alignment设置为Alignment.center 6 | 7 | ### 构造方法 8 | ``` dart 9 | Center({ 10 | Key key, 11 | double widthFactor, 12 | double heightFactor, 13 | Widget child 14 | }) 15 | ``` 16 | 17 | ### 属性介绍 18 | * widthFactor/heightFactor: 当widthFactor和heightFactor为null的时候,Center会调整到child的尺寸,当widthFactor或者heightFactor不为null的时候,Center会根据factor属性,扩展自己的尺寸,例如设置heightFactor为2.0的时候,那么,Center的高度将会是child的两倍 19 | * child: Center中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/constrainedbox/index.md: -------------------------------------------------------------------------------- 1 | ## **ConstrainedBox** 2 | 3 | > 4 | 一个基础布局控件,添加额外的限制条件(constraints)到child上 5 | 6 | ### 构造方法 7 | ``` dart 8 | ConstrainedBox({ 9 | Key key, 10 | @required this.constraints, 11 | Widget child 12 | }) 13 | ``` 14 | 15 | ### 属性介绍 16 | * constraints: 添加到child上的额外限制条件,其类型为BoxConstraints,限制各种最大最小宽高 17 | * child: ConstrainedBox中的内容Widget 18 | 19 | ### 其他用法 20 | * constraints值为BoxConstraints.expand时,提供width或者height,那么限制(Constraints)将严格使用给出的width或者height值 -------------------------------------------------------------------------------- /docs/widget/regular/fittedbox/index.md: -------------------------------------------------------------------------------- 1 | ## **FittedBox** 2 | > 3 | 根据需要,对child进行缩放(Scale)以及位置调整(Position) 4 | * 如果外部有约束的话,按照外部约束调整自身尺寸,然后缩放调整child,按照指定的条件进行布局 5 | * 如果没有外部约束条件,则跟child尺寸一致,指定的缩放以及位置属性将不起作用。 6 | 7 | ### 构造方法 8 | ``` dart 9 | FittedBox({ 10 | Key key, 11 | this.fit = BoxFit.contain, 12 | this.alignment = Alignment.center, 13 | Widget child, 14 | }) 15 | ``` 16 | 17 | ### 属性介绍 18 | * fit: 缩放的方式,默认的属性是BoxFit.contain, 可参考Demo变化 19 | * alignment: 对齐方式,默认的属性是Alignment.center,居中显示child, 可参考Demo变化 20 | * child: FittedBox中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/flow/index.md: -------------------------------------------------------------------------------- 1 | ## **Flow** 2 | 3 | > 4 | 实现优化流式布局以使用流布局的控件 5 | * 实现较为复杂,一般可通过Wrap来替换实现 6 | 7 | ### 构造方法 8 | ``` dart 9 | Flow({ 10 | Key key, 11 | @required this.delegate, 12 | List children = const [], 13 | }) 14 | ``` 15 | 16 | ### 属性介绍 17 | * delegeate: 影响布局的FlowDelegate,包含方法如下: 18 | * paintChildren: child的绘制控制代码,可以调整尺寸位置 19 | * shouldPepaint:是否需要重绘 20 | * shouldRelayout:是否需要重新布局 21 | * getConstraintsForChild:设置每个child的约束条件,会覆盖已有 22 | * getSize: 设置Flow的尺寸 23 | * children: Flow中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/layoutbuilder/index.md: -------------------------------------------------------------------------------- 1 | ## **LayoutBuilder** 2 | 3 | > 4 | 构建可依赖于父控件大小的控件树 5 | 6 | ### 构造方法 7 | ``` dart 8 | const LayoutBuilder({ 9 | Key key, 10 | @required this.builder 11 | }) 12 | ``` 13 | 14 | ### 属性介绍 15 | * builder: 传入一个LayoutWidgetBuilder类,builder: (BuildContext context, BoxConstraints viewportConstraints) 16 | * 通过viewportConstraints可以获取到父控件的尺寸 17 | * builder: 在布局时调用来构造小部件树,该构建器不得返回nul -------------------------------------------------------------------------------- /docs/widget/regular/listbody/index.md: -------------------------------------------------------------------------------- 1 | ## **ListBody** 2 | 3 | > 4 | 该控件沿着给定的轴顺序排列子节点 5 | * ListBody是一个不常直接使用的控件,一般会配合ListView或者Column等控件使用 6 | * 在主轴上,子节点按照顺序进行布局,在交叉轴上,子节点尺寸会被拉伸,以适应交叉轴的区域 7 | * 在主轴上,给予子节点的空间必须是不受限制的(unlimited),使得子节点可以全部被容纳,ListBody不会去裁剪或者缩放其子节点 8 | 9 | ### 构造方法 10 | ``` dart 11 | ListBody({ 12 | Key key, 13 | this.mainAxis = Axis.vertical, 14 | this.reverse = false, 15 | List children = const [], 16 | }) 17 | ``` 18 | 19 | ### 属性介绍 20 | * mainAxis:排列的主轴方向,Axis.vertical/horizontal 21 | * reverse:是否反向 22 | * children:ListBody中的内容Widget -------------------------------------------------------------------------------- /docs/widget/regular/padding/code.md: -------------------------------------------------------------------------------- 1 | ### Padding Demo 2 | 3 | ```dart 4 | import 'package:flutter/material.dart'; 5 | 6 | class Index extends StatelessWidget { 7 | @override 8 | Widget build(BuildContext context) { 9 | return Scaffold( 10 | appBar: AppBar(title: Text('Padding Demo'),), 11 | body: Center( 12 | child: Container( 13 | color: Theme.of(context).primaryColor, 14 | child: Padding( 15 | padding: const EdgeInsets.all(10.0), 16 | child: Container( 17 | width: 100.0, 18 | height: 100.0, 19 | color: Colors.lightBlue, 20 | alignment: Alignment.center, 21 | child: Text( 22 | 'Hello World', 23 | style: TextStyle(fontSize: 16.0, color: Colors.white), 24 | ), 25 | ) 26 | ), 27 | ) 28 | ), 29 | ); 30 | } 31 | } 32 | ``` -------------------------------------------------------------------------------- /docs/widget/regular/padding/index.md: -------------------------------------------------------------------------------- 1 | ## **Padding** 2 | > 3 | 作为一个基础的控件,功能非常单一,给子节点设置padding属性 4 | * 类似于前端中的 div + css设置padding的效果 5 | * Container + padding = Padding 6 | 7 | ### 构造方法 8 | ``` dart 9 | Padding({ 10 | Key key, 11 | @required this.padding, 12 | Widget child, 13 | }) 14 | ``` 15 | 16 | ### 属性介绍 17 | > 18 | Padding 控件的padding属性必须设置,不能为空 19 | * padding: 通过给定的padding值来隔开子组件,通过EdgeInsets类计算padding的大小 20 | * child: Padding中的内容widget -------------------------------------------------------------------------------- /docs/widget/regular/stack/index.md: -------------------------------------------------------------------------------- 1 | ## **Stack** 2 | 3 | > 4 | 该Widget将子控件相对于其边框进行定位 5 | * Stack的布局行为,根据child是positioned节点还是non-positioned节点来区分 6 | * 对于positioned的子节点,它们的位置会根据所设置的top、bottom、right以及left属性来确定,这几个值都是相对于Stack的左上角; 7 | * 对于non-positioned的子节点,它们会根据Stack的aligment来设置位置。 8 | * 对应child的顺序,第一个child会被绘制在最低端 9 | 10 | ### 构造方法 11 | ``` dart 12 | Stack({ 13 | Key key, 14 | this.alignment = AlignmentDirectional.topStart, 15 | this.textDirection, 16 | this.fit = StackFit.loose, 17 | this.overflow = Overflow.clip, 18 | List children = const [], 19 | }) 20 | ``` 21 | 22 | ### 属性介绍 23 | * alignment: 对齐方式,默认是topLeft 24 | * textDirection:文本方向,不常用 25 | * fit: 默认loose 26 | * loose:子节点尺寸可以从min到max 27 | * expand:子节点尽可能占用空间 28 | * passthrough: 不改变子节点约束 29 | * overflow:超过部分是否裁切,Overflow.clip/visible 30 | * children: Stack中的内容Widget 31 | 32 | -------------------------------------------------------------------------------- /docs/widget/regular/table/index.md: -------------------------------------------------------------------------------- 1 | ## **Table** 2 | 3 | > 4 | 该控件为其子控件进行table布局的Widget 5 | 6 | ### 构造方法 7 | ``` dart 8 | Table({ 9 | Key key, 10 | this.children = const [], 11 | this.columnWidths, 12 | this.defaultColumnWidth = const FlexColumnWidth(1.0), 13 | this.textDirection, 14 | this.border, 15 | this.defaultVerticalAlignment = TableCellVerticalAlignment.top, 16 | this.textBaseline, 17 | }) 18 | ``` 19 | 20 | ### 属性介绍 21 | > 22 | 该Widget适用于多行多列,若只有一行或者一列,选择Row或Column会更合适一些 23 | 24 | * columnWidths:设置每一列的宽度 25 | * defaultColumnWidth:默认的每一列宽度值,默认情况下均分,通过FixedColumnWidth设置 26 | * textDirection:文字显示方向 27 | * border:表格边框 28 | * defaultVerticalAlignment:每一个cell的垂直方向的对齐方式, 包含5种: 29 | * top:放置在的顶部; 30 | * middle:垂直居中; 31 | * bottom:放置在底部; 32 | * baseline:文本baseline对齐; 33 | * fill:充满整个cell。 34 | * textBaseline:defaultVerticalAlignment为baseline的时候,会用到这个属性。 35 | * children: Table的中的内容widget -------------------------------------------------------------------------------- /docs/widget/scrollview/listview/code.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/docs/widget/scrollview/listview/code.md -------------------------------------------------------------------------------- /docs/widget/scrollview/listview/index.md: -------------------------------------------------------------------------------- 1 | ## **ListView** -------------------------------------------------------------------------------- /docs/widget/scrollview/scrollable/index.md: -------------------------------------------------------------------------------- 1 | ## **Scrollable** 2 | 3 | > 实现了可滚动widget的交互模型,但不包含UI显示相关的逻辑 4 | 5 | ### 构造方法 6 | ``` 7 | Scrollable({ 8 | Key key, 9 | AxisDirection axisDirection: AxisDirection.down, 10 | ScrollController controller, 11 | ScrollPhysics physics, 12 | @required ViewportBuilder viewportBuilder, 13 | bool excludeFromSemantics: false, 14 | int semanticChildCount, 15 | DragStartBehavior dragStartBehavior: DragStartBehavior.down 16 | }) 17 | ``` 18 | 19 | ### 属性介绍 20 | > viewportBuilder:显示滚动组件的属性,实例CustomScrollView/SingleChildScrollView实现不同的滚动效果。 21 | - CustomScrollView: 实现随滚动条,appbar向上移动效果,具体参考CustomScrollView 22 | - SingleChildScrollView:具体参考SingleChildScrollView -------------------------------------------------------------------------------- /docs/widget/scrollview/scrollbar/index.md: -------------------------------------------------------------------------------- 1 | ## **Scrollbar** 2 | > 显示滚动条的位置的组件 3 | 4 | ### 构造函数 5 | ``` 6 | Scrollbar({ 7 | Key key, 8 | @required Widget child 9 | }) 10 | ``` 11 | 12 | ### 属性介绍 13 | > child: 子组件必填,返回可滾动列表组件 14 | - ListView/PageView/GridView/CustomScrollView... 15 | -------------------------------------------------------------------------------- /docs/widget/scrollview/scrollcontroller/index.md: -------------------------------------------------------------------------------- 1 | ## **ScrollController** 2 | > 控制滚动组件滚动位置,监听与设置滚动位置。一般使用在滚动组件中的controller属性 3 | - 如ListView/PageView/GridView... 4 | 5 | ### 构造函数 6 | ``` 7 | ScrollController({ 8 | double initialScrollOffset = 0.0, 9 | this.keepScrollOffset = true, 10 | this.debugLabel, 11 | }) 12 | ``` 13 | 14 | ### 属性介绍 15 | - initialScrollOffset double 初始化滚动位置 16 | - debugLabel: String, 滚动时返回打印的内容, 当存在多滚动条组件时可进行区别. 17 | - keepScrollOffset, bool, 默认true时存储滚动位置,初始为0. 当为false时,则不存储滚动位置 18 | -------------------------------------------------------------------------------- /docs/widget/vision/backdropfilter/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/clipoval/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/clippath/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/cliprect/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/custompaint/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/decoratedbox/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/fractionaltranslation/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/mediaquery/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/opacity/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/rotatedbox/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/theme/index.md: -------------------------------------------------------------------------------- 1 | ## **文档完善中** -------------------------------------------------------------------------------- /docs/widget/vision/transform/index.md: -------------------------------------------------------------------------------- 1 | ## **Transform** 2 | 3 | > 在绘制子元素前应用转换的组件 4 | 5 | ### 构造方法 6 | ``` 7 | Transform({ 8 | Key key, 9 | @required Matrix4 transform, 10 | Offset origin, 11 | AlignmentGeometry alignment, 12 | bool transformHitTests: true, 13 | Widget child 14 | }) 15 | ``` 16 | 17 | ### 属性介绍 18 | origin:坐标系的原点(相对于此渲染对象的左上角)应用矩阵的原点 19 | alignment:原点的对齐方式 20 | transform: 在绘制过程中改变子元素的矩阵 21 | transformHitTests:在测试时是否执行转换 22 | 23 | 24 | ### 实例 25 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @import Firebase;//增加 firebase 支持 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application 9 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 10 | 11 | [FIRApp configure];//增加 firebase 支持 12 | 13 | [GeneratedPluginRegistrant registerWithRegistry:self]; 14 | // Override point for customization after application launch. 15 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/ios/Runner/Assets.xcassets/LaunchImage.imageset/iTunesArtwork@3x.png -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/components/example_comp.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/config/theme.dart' show AppTheme; 3 | 4 | class Index extends StatelessWidget { 5 | final Widget child; 6 | 7 | Index({Key key, this.child}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | Size size = MediaQuery.of(context).size; 12 | return Center( 13 | child: Container( 14 | margin: EdgeInsets.all(10), 15 | decoration: BoxDecoration( 16 | border: Border.all(color: Color(AppTheme.mainColor), width: 1.0), 17 | ), 18 | child: SizedBox.fromSize( 19 | size: size / 1.3, 20 | child: this.child, 21 | ), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/components/markdown_comp.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_markdown/flutter_markdown.dart' as md; 3 | import 'package:efox_flutter/utils/syntaxHighlighter.dart' 4 | show DartSyntaxHighlighter; 5 | 6 | class Index extends StatelessWidget { 7 | final String data; 8 | Index(this.data); 9 | 10 | @override 11 | Widget build(BuildContext build) { 12 | return md.MarkdownBody( 13 | data: this.data, syntaxHighlighter: DartSyntaxHighlighter()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/components/updating_comp.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Container( 7 | width: double.infinity, 8 | margin: EdgeInsets.only(top: 100.0), 9 | child: Column( 10 | mainAxisAlignment: MainAxisAlignment.center, 11 | crossAxisAlignment: CrossAxisAlignment.center, 12 | children: [ 13 | Text( 14 | '等待更新', 15 | style: TextStyle( 16 | fontSize: 20.0, 17 | color: Colors.grey 18 | ), 19 | ) 20 | ], 21 | ), 22 | ); 23 | } 24 | } -------------------------------------------------------------------------------- /lib/config/color.dart: -------------------------------------------------------------------------------- 1 | Map materialColor = { 2 | 'red': 0xFFF44336, 3 | 'pink': 0xFFE91E63, 4 | 'purple': 0xFF9C27B0, 5 | 'deepPurple': 0xFF673AB7, 6 | 'indigo': 0xFF3F51B5, 7 | // 8 | 9 | 'blue': 0xFF2196F3, 10 | 'lightBlue': 0xFF03A9F4, 11 | 'cyan': 0xFF00BCD4, 12 | 'teal': 0xFF009688, 13 | 'green': 0xFF4CAF50, 14 | // 15 | 'lightGreen': 0xFF8BC34A, 16 | 'lime': 0xFFCDDC39, 17 | 'yellow': 0xFFFFEB3B, 18 | 'amber': 0xFFFFC107, 19 | 'orange': 0xFFFF9800, 20 | // 21 | 'deepOrange': 0xFFFF5722, 22 | 'brown': 0xFF795548, 23 | 'grey': 0xFF9E9E9E, 24 | 'blueGrey': 0xFF607D8B, 25 | 'black': 0xFF222222, 26 | }; 27 | -------------------------------------------------------------------------------- /lib/config/development.dart: -------------------------------------------------------------------------------- 1 | class Config { 2 | String versionUrl = 'https://raw.githubusercontent.com/efoxTeam/flutter-ui/master/assets/config.json'; 3 | String githubWeb = 'https://efoxteam.github.io/flutter-ui/'; 4 | String githubAssetOrigin = 5 | 'https://github.com/efoxTeam/flutter-ui/blob/master/'; 6 | String githubMarkdownOrigin = 7 | 'https://raw.githubusercontent.com/efoxTeam/flutter-ui/master/'; 8 | } 9 | -------------------------------------------------------------------------------- /lib/config/index.dart: -------------------------------------------------------------------------------- 1 | import 'development.dart' as Development; 2 | import 'production.dart' as Production; 3 | 4 | const bool isPro = false; 5 | const String owner_repo = 'efoxTeam/flutter-ui'; 6 | 7 | Object env = isPro ? Production.Config() : Development.Config(); 8 | -------------------------------------------------------------------------------- /lib/config/production.dart: -------------------------------------------------------------------------------- 1 | class Config { 2 | String versionUrl = 'https://raw.githubusercontent.com/efoxTeam/flutter-ui/master/assets/config.json'; 3 | String githubWeb = 'https://efoxteam.github.io/flutter-ui/'; 4 | String githubAssetOrigin = 5 | 'https://github.com/efoxTeam/flutter-ui/blob/master/'; 6 | String githubMarkdownOrigin = 7 | 'https://raw.githubusercontent.com/efoxTeam/flutter-ui/master/'; 8 | } 9 | -------------------------------------------------------------------------------- /lib/controller/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:efox_flutter/store/index.dart' 2 | show Store, ConfigModel, UserModel; 3 | 4 | import 'package:efox_flutter/utils/appVersion.dart' show AppVersion; 5 | 6 | void initState() async { 7 | // 获取版本号 8 | Store.value().getAppVersion(); 9 | // 登录 10 | /*Store.value().getLocalUserInfo().then((res) { 11 | if (res) { 12 | Store.value().getUserStar(); 13 | } 14 | });*/ 15 | // Store.value().getFlutterUIStar(); 16 | Future.delayed(Duration(seconds: 3), () { 17 | AppVersion().check(Store.context); 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /lib/lang/config.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ConfigLanguage { 4 | static List supportedLocales = [ 5 | Locale('zh', 'CH'), 6 | Locale('en', 'US'), 7 | ]; 8 | 9 | static Map sopportLanguage = { 10 | "zh": {"code": "zh", "country_code": "CH"}, 11 | "en": {"code": "en", "country_code": "US"} 12 | }; 13 | 14 | static dynamic defualtLanguage = { 15 | "code": "zh", 16 | "country_code": "CH" 17 | }; 18 | } -------------------------------------------------------------------------------- /lib/mock/index.dart: -------------------------------------------------------------------------------- 1 | import 'login.dart' as LoginTest; 2 | 3 | runTestCase () async { 4 | await LoginTest.testLogin(); 5 | } -------------------------------------------------------------------------------- /lib/mock/login.dart: -------------------------------------------------------------------------------- 1 | import 'package:efox_flutter/store/objects/user_info.dart' show UserInfo; 2 | const user = { 3 | "id": 123, 4 | "plan": { 5 | 'name': '123' 6 | } 7 | }; 8 | 9 | testLogin () { 10 | UserInfo _user = UserInfo.fromJson(user); 11 | print('_user $_user'); 12 | print('_user ${_user.plan.name}'); 13 | } -------------------------------------------------------------------------------- /lib/package/README.md: -------------------------------------------------------------------------------- 1 | # Flutter Packages for FLUTTER UI APP 2 | > packages 为纯flutter 组件,沉淀通用组件,通用方法,通用模块 -------------------------------------------------------------------------------- /lib/package/router/router.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/lib/package/router/router.dart -------------------------------------------------------------------------------- /lib/page/app_login/text.dart: -------------------------------------------------------------------------------- 1 | const loginText = 'a1sd56a1sd56as1d'; -------------------------------------------------------------------------------- /lib/page/library/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/lang/index.dart' show AppLocalizations; 3 | 4 | class Index extends StatefulWidget { 5 | @override 6 | _IndexState createState() => _IndexState(); 7 | } 8 | 9 | class _IndexState extends State { 10 | @override 11 | Widget build(BuildContext context) { 12 | return Scaffold( 13 | appBar: AppBar( 14 | elevation: 0, 15 | centerTitle: true, 16 | title: Text( 17 | AppLocalizations.$t('title_library') 18 | ), 19 | ), 20 | body: Center( 21 | child: Text('第三方库'), 22 | ), 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/plugin/README.md: -------------------------------------------------------------------------------- 1 | # Flutter Plugin for FLUTTER UI APP 2 | > plugin 为混编 flutter 组件,沉淀通用组件,通用方法,通用模块 -------------------------------------------------------------------------------- /lib/router/controller.dart: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/lib/router/controller.dart -------------------------------------------------------------------------------- /lib/router/handles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:fluro/fluro.dart'; 3 | import 'package:efox_flutter/components/webview_comp.dart' as webview_comp; 4 | 5 | Handler webviewHandler = Handler( 6 | handlerFunc: (BuildContext context, Map params) { 7 | String url = params["url"]?.first; 8 | String title = params["title"]?.first ?? 'WebView'; 9 | return webview_comp.Index( 10 | url: url, 11 | title: title 12 | ); 13 | }, 14 | ); -------------------------------------------------------------------------------- /lib/store/models/author_state_model.dart: -------------------------------------------------------------------------------- 1 | import '../objects/author_info.dart' show AuthorInfo; 2 | import 'package:flutter/foundation.dart' show ChangeNotifier; 3 | 4 | class AuthorModel extends ChangeNotifier { 5 | Map list = { 6 | 'ken': AuthorInfo( 7 | name: 'Ken', 8 | avatarUrl: 'https://avatars0.githubusercontent.com/u/3890513?s=400&v=4', 9 | id: 'ken', 10 | url: 'https://github.com/ckken', 11 | ), 12 | 'wanwu': AuthorInfo( 13 | name: 'wanwu', 14 | avatarUrl: 'https://avatars3.githubusercontent.com/u/15372930?s=460&v=4', 15 | id: 'wanwu', 16 | url: 'https://github.com/wanwusangzhi', 17 | ), 18 | 'lhr': AuthorInfo( 19 | name: 'Lin-Haoran', 20 | avatarUrl: 'https://avatars3.githubusercontent.com/u/30428314?s=400&v=4', 21 | id: 'lhr', 22 | url: 'https://github.com/DIVINER-only', 23 | ), 24 | }; 25 | } 26 | -------------------------------------------------------------------------------- /lib/store/objects/author_info.dart: -------------------------------------------------------------------------------- 1 | class AuthorInfo extends Object { 2 | String name; 3 | String avatarUrl; 4 | String url; 5 | String id; 6 | 7 | AuthorInfo({this.name, this.avatarUrl, this.id, this.url}); 8 | } 9 | -------------------------------------------------------------------------------- /lib/utils/analytics.dart: -------------------------------------------------------------------------------- 1 | import 'package:firebase_analytics/firebase_analytics.dart'; 2 | import 'package:firebase_analytics/observer.dart'; 3 | 4 | //统计 5 | FirebaseAnalytics analytics = FirebaseAnalytics(); 6 | FirebaseAnalyticsObserver observer = 7 | FirebaseAnalyticsObserver(analytics: analytics); 8 | -------------------------------------------------------------------------------- /lib/utils/loadAsset.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart' show rootBundle; 2 | import 'package:efox_flutter/http/index.dart' as Http; 3 | 4 | Future readLocaleFile(path) async { 5 | return await rootBundle.loadString('${path}', cache: false); 6 | } 7 | 8 | Future readRemoteFile(path) async { 9 | return await Http.get(url: path); 10 | } 11 | -------------------------------------------------------------------------------- /lib/utils/localStorage.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:shared_preferences/shared_preferences.dart'; 3 | 4 | class LocalStorage { 5 | static Future get(String key) async { 6 | SharedPreferences prefs = await SharedPreferences.getInstance(); 7 | return prefs.getString(key); 8 | } 9 | 10 | static Future set(String key, String value) async { 11 | SharedPreferences prefs = await SharedPreferences.getInstance(); 12 | prefs.setString(key, value); 13 | } 14 | 15 | static Future setJSON(String key, value) async { 16 | SharedPreferences prefs = await SharedPreferences.getInstance(); 17 | value = json.encode(value); 18 | prefs.setString(key, value); 19 | } 20 | 21 | static Future remove(String key) async { 22 | SharedPreferences prefs = await SharedPreferences.getInstance(); 23 | prefs.remove(key); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/utils/share.dart: -------------------------------------------------------------------------------- 1 | import 'package:share/share.dart'; 2 | 3 | void shareText(text) { 4 | Share.share(text); 5 | } 6 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedbuilder/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedBuilder'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedbuilder/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedBuilder'; 7 | static String mdUrl = 'docs/widget/animate/animatedbuilder/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedBuilder-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedcontainer/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedContainer'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedcontainer/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedContainer'; 7 | static String mdUrl = 'docs/widget/animate/animatedcontainer/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedContainer-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedcrossfade/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedCrossFade'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedcrossfade/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedCrossFade'; 7 | static String mdUrl = 'docs/widget/animate/animatedcrossfade/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedCrossFade-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animateddefaulttextstyle/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedDefaultTextStyle'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animateddefaulttextstyle/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedDefaultTextStyle'; 7 | static String mdUrl = 'docs/widget/animate/animateddefaulttextstyle/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedDefaultTextStyle-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedliststate/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedListState'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedliststate/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedListState'; 7 | static String mdUrl = 'docs/widget/animate/animatedliststate/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedListState-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedmodalbarrier/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedModalBarrier'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedmodalbarrier/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedModalBarrier'; 7 | static String mdUrl = 'docs/widget/animate/animatedmodalbarrier/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedModalBarrier-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedopacity/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedOpacity'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedopacity/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedOpacity'; 7 | static String mdUrl = 'docs/widget/animate/animatedopacity/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedOpacity-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedphysicalmodel/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedPhysicalModel'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedphysicalmodel/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedPhysicalModel'; 7 | static String mdUrl = 'docs/widget/animate/animatedphysicalmodel/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedPhysicalModel-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedpositioned/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedPositioned'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedpositioned/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedPositioned'; 7 | static String mdUrl = 'docs/widget/animate/animatedpositioned/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedPositioned-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedsize/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedSize'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedsize/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedSize'; 7 | static String mdUrl = 'docs/widget/animate/animatedsize/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedSize-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedwidget/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedWidget'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedwidget/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedWidget'; 7 | static String mdUrl = 'docs/widget/animate/animatedwidget/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedWidget-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedwidgetbasestate/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AnimatedWidgetBaseState'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/animatedwidgetbasestate/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimatedWidgetBaseState'; 7 | static String mdUrl = 'docs/widget/animate/animatedwidgetbasestate/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AnimatedWidgetBaseState-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/animationcontroller/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AnimationController'; 7 | static String mdUrl = 'docs/widget/animate/animationcontroller/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/animation/AnimationController-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/decoratedboxtransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('DecoratedBoxTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/decoratedboxtransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'DecoratedBoxTransition'; 7 | static String mdUrl = 'docs/widget/animate/decoratedboxtransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/DecoratedBoxTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/fadetransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('FadeTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/fadetransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FadeTransition'; 7 | static String mdUrl = 'docs/widget/animate/fadetransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/FadeTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/hero/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Hero'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/hero/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Hero'; 7 | static String mdUrl = 'docs/widget/animate/hero/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Hero-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/positionedtransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('PositionedTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/positionedtransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'PositionedTransition'; 7 | static String mdUrl = 'docs/widget/animate/positionedtransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/PositionedTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/rotationtransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('RotationTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/rotationtransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RotationTransition'; 7 | static String mdUrl = 'docs/widget/animate/rotationtransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/RotationTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/scaletransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('ScaleTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/scaletransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ScaleTransition'; 7 | static String mdUrl = 'docs/widget/animate/scaletransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ScaleTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/sizetransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SizeTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/sizetransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'SizeTransition'; 7 | static String mdUrl = 'docs/widget/animate/sizetransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/SizeTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/animate/slidetransition/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SlideTransition'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/animate/slidetransition/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'SlideTransition'; 7 | static String mdUrl = 'docs/widget/animate/slidetransition/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/SlideTransition-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/author_list.dart: -------------------------------------------------------------------------------- 1 | Map list = { 2 | 'AnimatedBuilder': 'lhr', 3 | 'GridView': 'wanwu', 4 | 'ListView': 'lhr', 5 | 'NestedScrollView': 'ken' 6 | }; 7 | -------------------------------------------------------------------------------- /lib/widget/bulletbox/alertdialog/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AlertDialog'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/AlertDialog-class.html'; 8 | static String mdUrl = 'docs/widget/bulletbox/alertdialog/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/bulletbox/bottomsheet/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'BottomSheet'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/BottomSheet-class.html'; 8 | static String mdUrl = 'docs/widget/bulletbox/bottomsheet/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/bulletbox/expansionPanel/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ExpansionPanel'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/ExpansionPanel-class.html'; 8 | static String mdUrl = 'docs/widget/bulletbox/expansionpanel/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/bulletbox/simpledialog/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'SimpleDialog'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/SimpleDialog-class.html'; 8 | static String mdUrl = 'docs/widget/bulletbox/simpledialog/index.md'; 9 | @override 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/bulletbox/snackbar/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'SnackBar'; 7 | static String originCodeUrl = ''; 8 | static String mdUrl = 'docs/widget/bulletbox/snackbar/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/common/assetbundle/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AssetBundle'; 7 | static String mdUrl = 'docs/widget/common/assetbundle/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AssetBundle-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/buttonbar/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('ButtonBar'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/common/buttonbar/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ButtonBar'; 7 | static String mdUrl = 'docs/widget/common/buttonbar/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ButtonBar-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/chip/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Chip'; 7 | static String mdUrl = 'docs/widget/common/chip/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Chip-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/container/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Container'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/common/container/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'package:efox_flutter/widget/regular/container/demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Container'; 7 | static String mdUrl = 'docs/widget/regular/container/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Container-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/divider/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Divider'; 7 | static String mdUrl = 'docs/widget/common/divider/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Divider-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/flatbutton/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FlatButton'; 7 | static String mdUrl = 'docs/widget/common/flatbutton/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/FlatButton-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/icon/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Icon'), 19 | ), 20 | body: Center( 21 | child: Icon( 22 | Icons.android, 23 | size: 100.0, 24 | color: Theme.of(context).primaryColor, 25 | ), 26 | ), 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/widget/common/icon/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Icon'; 7 | static String mdUrl = 'docs/widget/common/icon/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Icon-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/iconbutton/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'IconButton'; 7 | static String mdUrl = 'docs/widget/common/iconbutton/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/IconButton-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/image/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Image'; 7 | static String mdUrl = 'docs/widget/common/image/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Image-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/listtile/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ListTile'; 7 | static String mdUrl = 'docs/widget/common/listtile/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ListTile-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/placeholder/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Placeholder'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/common/placeholder/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Placeholder'; 7 | static String mdUrl = 'docs/widget/common/placeholder/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Placeholder-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/raisedbutton/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RaisedButton'; 7 | static String mdUrl = 'docs/widget/common/raisedbutton/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/RaisedButton-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/rawimage/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('RawImage'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/common/rawimage/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RawImage'; 7 | static String mdUrl = 'docs/widget/common/rawimage/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/RawImage-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/stepper/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Stepper'; 7 | static String mdUrl = 'docs/widget/common/stepper/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Stepper-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/text/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Text'; 7 | static String mdUrl = 'docs/widget/common/text/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Text-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/common/tooltip/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Tooltip'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/common/tooltip/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Tooltip'; 7 | static String mdUrl = 'docs/widget/common/tooltip/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Tooltip-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/checkbox/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'CheckBox'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/Checkbox-class.html'; 8 | static String mdUrl = 'docs/widget/form/checkbox/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/form/checkboxlisttile/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'CheckboxListTile'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/CheckboxListTile-class.html'; 8 | static String mdUrl = 'docs/widget/form/checkboxlisttile/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/form/daypicker/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'DayPicker'; 7 | static String mdUrl = 'docs/widget/form/daypicker/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/DayPicker-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/form/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Form'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/form/form/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Form'; 7 | static String mdUrl = 'docs/widget/form/form/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Form-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/formfield/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('FormField'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/form/formfield/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FormField'; 7 | static String mdUrl = 'docs/widget/form/formfield/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/FormField-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/radio/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Radio'; 7 | static String mdUrl = 'docs/widget/form/radio/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Radio-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/radiolisttile/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RadioListTile'; 7 | static String mdUrl = 'docs/widget/form/radiolisttile/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/RadioListTile-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/rawkeyboard/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('RawKeyboard'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/form/rawkeyboard/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RawKeyboard'; 7 | static String mdUrl = 'docs/widget/form/rawkeyboard/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/RawKeyboard-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/slider/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Slider'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/Slider-class.html'; 8 | static String mdUrl = 'docs/widget/form/slider/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/form/switch/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Switch'; 7 | static String mdUrl = 'docs/widget/form/switch/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Switch-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/switchlisttile/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'SwitchListTile'; 7 | static String mdUrl = 'docs/widget/form/switchlisttile/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/SwitchListTile-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/textfield/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'TextField'; 7 | static String mdUrl = 'docs/widget/form/textfield/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/TextField-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/form/textinput/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('TextInput'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/form/textinput/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'TextInput'; 7 | static String mdUrl = 'docs/widget/form/textinput/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/TextInput-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/gestures/absorbpointer/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('AbsorbPointer'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/gestures/absorbpointer/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AbsorbPointer'; 7 | static String mdUrl = 'docs/widget/gestures/absorbpointer/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AbsorbPointer-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/gestures/dismissible/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Dismissible'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/gestures/dismissible/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Dismissible'; 7 | static String mdUrl = 'docs/widget/gestures/dismissible/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Dismissible-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/gestures/dragtarget/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('DragTarget'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/gestures/dragtarget/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'DragTarget'; 7 | static String mdUrl = 'docs/widget/gestures/dragtarget/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/DragTarget-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/gestures/ignorepointer/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('IgnorePointer'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/gestures/ignorepointer/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'IgnorePointer'; 7 | static String mdUrl = 'docs/widget/gestures/ignorepointer/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/IgnorePointer-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/gestures/longpressdraggable/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'LongPressDraggable'; 7 | static String mdUrl = 'docs/widget/gestures/longpressdraggable/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/LongPressDraggable-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/index.dart: -------------------------------------------------------------------------------- 1 | import 'scrollview/index.dart' as scrollview; 2 | import 'regular/index.dart' as regular; 3 | import 'navigator/index.dart' as navigator; 4 | import 'form/index.dart' as form; 5 | import 'bulletbox/index.dart' as bulletbox; 6 | import 'vision/index.dart' as vision; 7 | import 'animate/index.dart' as animate; 8 | import 'gestures/index.dart' as gestures; 9 | import 'common/index.dart' as common; 10 | List getAllWidgets() { 11 | List routerMap =[]; 12 | routerMap.addAll(scrollview.widgetMap); 13 | routerMap.addAll(regular.widgetMap); 14 | routerMap.addAll(form.widgetMap); 15 | routerMap.addAll(navigator.widgetMap); 16 | routerMap.addAll(bulletbox.widgetMap); 17 | routerMap.addAll(common.widgetMap); 18 | routerMap.addAll(animate.widgetMap); 19 | routerMap.addAll(gestures.widgetMap); 20 | routerMap.addAll(vision.widgetMap); 21 | return routerMap; 22 | } -------------------------------------------------------------------------------- /lib/widget/navigator/appbar/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AppBar'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/AppBar-class.html'; 8 | static String mdUrl = 'docs/widget/navigator/appbar/index.md'; 9 | 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/navigator/drawer/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Drawer'; 7 | static String mdUrl = 'docs/widget/navigator/drawer/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Drawer-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/floatingactionbutton/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FloatingActionButton'; 7 | static String mdUrl = 'docs/widget/navigator/floatingactionbutton/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/FloatingActionButton-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/materialapp/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('MaterialApp'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/navigator/materialapp/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'MaterialApp'; 7 | static String mdUrl = 'docs/widget/navigator/materialapp/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/MaterialApp-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/navigator/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Navigator'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/navigator/navigator/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Navigator'; 7 | static String mdUrl = 'docs/widget/navigator/navigator/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Navigator-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/pageview/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'PageView'; 7 | static String mdUrl = 'docs/widget/navigator/pageview/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/PageView-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/popupmenubutton/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'PopupMenuButton'; 7 | static String mdUrl = 'docs/widget/navigator/popupmenubutton/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/PopupMenuButton-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/scaffold/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Scaffold'; 7 | static String mdUrl = 'docs/widget/navigator/scaffold/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/Scaffold-class.html'; 9 | 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/navigator/tabbar/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('TabBar'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/navigator/tabbar/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'TabBar'; 7 | static String mdUrl = 'docs/widget/navigator/tabbar/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/TabBar-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/tabbarview/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('TabBarView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/navigator/tabbarview/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'TabBarView'; 7 | static String mdUrl = 'docs/widget/navigator/tabbarview/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/TabBarView-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/navigator/widgetsapp/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('WidgetsApp'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/navigator/widgetsapp/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'WidgetsApp'; 7 | static String mdUrl = 'docs/widget/navigator/widgetsapp/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/WidgetsApp-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/regular/align/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Align'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Align-class.html'; 8 | static String mdUrl = 'docs/widget/regular/align/index.md'; 9 | 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/regular/aspectratio/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'AspectRatio'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/AspectRatio-class.html'; 8 | static String mdUrl = 'docs/widget/regular/aspectratio/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/regular/center/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Center'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Center-class.html'; 8 | static String mdUrl = 'docs/widget/regular/center/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/regular/column/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | import 'demo_expanded.dart' as DemoExpanded; 5 | 6 | class Index extends StatefulWidget { 7 | static String title = 'Column'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Column-class.html'; 9 | static String mdUrl = 'docs/widget/regular/column/index.md'; 10 | 11 | @override 12 | _IndexState createState() => new _IndexState(); 13 | } 14 | 15 | class _IndexState extends State { 16 | @override 17 | Widget build(BuildContext context) { 18 | return widget_comp.Index( 19 | title: Index.title, 20 | originCodeUrl: Index.originCodeUrl, 21 | mdUrl: Index.mdUrl, 22 | demoChild: [ 23 | Demo.Index(), 24 | DemoExpanded.Index() 25 | ], 26 | ); 27 | } 28 | } -------------------------------------------------------------------------------- /lib/widget/regular/constrainedbox/demo_expand.dart: -------------------------------------------------------------------------------- 1 | /** 2 | * auth: linhaoran 3 | * Email: 1476589247@qq.com 4 | */ 5 | import 'package:flutter/material.dart'; 6 | 7 | class Index extends StatelessWidget { 8 | @override 9 | Widget build(BuildContext context) { 10 | return Scaffold( 11 | appBar: AppBar(title: Text('Expand'),), 12 | body: Center( 13 | child: ConstrainedBox( 14 | constraints: BoxConstraints.expand( 15 | width: 150.0, 16 | height: 150.0 17 | ), 18 | child: Container( 19 | alignment: Alignment.center, 20 | color: Theme.of(context).primaryColor, 21 | child: Text( 22 | 'Hello World', 23 | style: TextStyle(fontSize: 20.0, color: Colors.white, fontWeight: FontWeight.bold) 24 | ), 25 | ), 26 | ), 27 | ), 28 | ); 29 | } 30 | } -------------------------------------------------------------------------------- /lib/widget/regular/constrainedbox/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | import 'demo_expand.dart' as DemoExpand; 5 | 6 | class Index extends StatefulWidget { 7 | static String title = 'ConstrainedBox'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ConstrainedBox-class.html'; 9 | static String mdUrl = 'docs/widget/regular/constrainedbox/index.md'; 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | DemoExpand.Index() 24 | ], 25 | ); 26 | } 27 | } -------------------------------------------------------------------------------- /lib/widget/regular/container/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | 6 | class Index extends StatefulWidget { 7 | static String title = 'Container'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Container-class.html'; 9 | static String mdUrl = 'docs/widget/regular/container/index.md'; 10 | 11 | @override 12 | _IndexState createState() => _IndexState(); 13 | } 14 | 15 | class _IndexState extends State { 16 | @override 17 | Widget build(BuildContext context) { 18 | return widget_comp.Index( 19 | title: Index.title, 20 | originCodeUrl: Index.originCodeUrl, 21 | mdUrl: Index.mdUrl, 22 | demoChild: [ 23 | Demo.Index() 24 | ], 25 | ); 26 | } 27 | } -------------------------------------------------------------------------------- /lib/widget/regular/fittedbox/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FittedBox'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/FittedBox-class.html'; 8 | static String mdUrl = 'docs/widget/regular/fittedbox/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/regular/flow/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Flow'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Flow-class.html'; 8 | static String mdUrl = 'docs/widget/regular/flow/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/regular/layoutbuilder/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'LayoutBuilder'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/LayoutBuilder-class.html'; 8 | static String mdUrl = 'docs/widget/regular/layoutbuilder/index.md'; 9 | 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/regular/listbody/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ListBody'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ListBody-class.html'; 8 | static String mdUrl = 'docs/widget/regular/listbody/index.md'; 9 | 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/regular/padding/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | 6 | class Index extends StatefulWidget { 7 | static String title = 'Padding'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Padding-class.html'; 9 | static String mdUrl = 'docs/widget/regular/padding/index.md'; 10 | @override 11 | _IndexState createState() => _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index() 23 | ], 24 | ); 25 | } 26 | } -------------------------------------------------------------------------------- /lib/widget/regular/row/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | import 'demo_expanded.dart' as DemoExpanded; 5 | 6 | class Index extends StatefulWidget { 7 | static String title = 'Row'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Row-class.html'; 9 | static String mdUrl = 'docs/widget/regular/row/index.md'; 10 | 11 | @override 12 | _IndexState createState() => new _IndexState(); 13 | } 14 | 15 | class _IndexState extends State { 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return widget_comp.Index( 20 | title: Index.title, 21 | originCodeUrl: Index.originCodeUrl, 22 | mdUrl: Index.mdUrl, 23 | demoChild: [ 24 | Demo.Index(), 25 | DemoExpanded.Index() 26 | ] 27 | ); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/widget/regular/stack/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Stack'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Stack-class.html'; 8 | static String mdUrl = 'docs/widget/regular/stack/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/regular/table/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Table'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Table-class.html'; 8 | static String mdUrl = 'docs/widget/regular/table/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/regular/wrap/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Wrap'; 7 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Wrap-class.html'; 8 | static String mdUrl = 'docs/widget/regular/wrap/index.md'; 9 | @override 10 | _IndexState createState() => _IndexState(); 11 | } 12 | 13 | class _IndexState extends State { 14 | @override 15 | Widget build(BuildContext context) { 16 | return widget_comp.Index( 17 | title: Index.title, 18 | originCodeUrl: Index.originCodeUrl, 19 | mdUrl: Index.mdUrl, 20 | demoChild: [ 21 | Demo.Index() 22 | ], 23 | ); 24 | } 25 | } -------------------------------------------------------------------------------- /lib/widget/scrollview/gridview/demo_builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatelessWidget { 4 | @override 5 | Widget build(BuildContext context) { 6 | return Scaffold( 7 | appBar: AppBar( 8 | title: Text('GridView.builder'), 9 | ), 10 | body: GridView.builder( 11 | itemCount: 31, 12 | gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( 13 | crossAxisCount: 3, // 单行最大数量值 14 | ), 15 | itemBuilder: (context, index) { 16 | print('index $index'); 17 | return Center( 18 | child: Text('index $index'), 19 | ); 20 | }, 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/widget/scrollview/listview/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | Widget build(BuildContext context) { 11 | return Container( 12 | child: Text('test'), 13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /lib/widget/scrollview/nestedscrollview/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'NestedScrollView'; 7 | static String mdUrl = 'docs/widget/scrollview/nestedscrollview/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/Scrollbar-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ] 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/scrollview/scrollable/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Scrollable'; 7 | static String mdUrl = 'docs/widget/scrollview/scrollable/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Scrollable-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ] 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/scrollview/scrollbar/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Scrollbar'; 7 | static String mdUrl = 'docs/widget/scrollview/scrollbar/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/material/Scrollbar-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ] 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/scrollview/scrollcontroller/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ScrollController'; 7 | static String mdUrl = 'docs/widget/scrollview/scrollcontroller/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ScrollController-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ] 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/backdropfilter/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/backdropfilter/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'BackdropFilter'; 7 | static String mdUrl = 'docs/widget/vision/backdropfilter/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/BackdropFilter-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/clipoval/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/clipoval/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ClipOval'; 7 | static String mdUrl = 'docs/widget/vision/clipoval/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ClipOval-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/clippath/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/clippath/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ClipPath'; 7 | static String mdUrl = 'docs/widget/vision/clippath/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ClipPath-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/cliprect/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/cliprect/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'ClipRect'; 7 | static String mdUrl = 'docs/widget/vision/cliprect/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/ClipRect-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/custompaint/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/custompaint/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'CustomPaint'; 7 | static String mdUrl = 'docs/widget/vision/custompaint/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/CustomPaint-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/decoratedbox/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/decoratedbox/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'DecoratedBox'; 7 | static String mdUrl = 'docs/widget/vision/decoratedbox/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/DecoratedBox-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/fractionaltranslation/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/fractionaltranslation/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'FractionalTranslation'; 7 | static String mdUrl = 'docs/widget/vision/fractionaltranslation/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/FractionalTranslation-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/mediaquery/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/mediaquery/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'MediaQuery'; 7 | static String mdUrl = 'docs/widget/vision/mediaquery/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/MediaQuery-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/opacity/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/opacity/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Opacity'; 7 | static String mdUrl = 'docs/widget/vision/opacity/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Opacity-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/rotatedbox/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/rotatedbox/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'RotatedBox'; 7 | static String mdUrl = 'docs/widget/vision/rotatedbox/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/RotatedBox-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/theme/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('SingleChildScrollView'), 19 | ), 20 | body: Center( 21 | child: Text('更新中'), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /lib/widget/vision/theme/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Theme'; 7 | static String mdUrl = 'docs/widget/vision/theme/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Theme-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/widget/vision/transform/demo.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class Index extends StatefulWidget { 4 | @override 5 | State createState() => _IndexState(); 6 | } 7 | 8 | class _IndexState extends State { 9 | @override 10 | void initState() { 11 | super.initState(); 12 | } 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return Scaffold( 17 | appBar: AppBar( 18 | title: Text('Transform'), 19 | ), 20 | body: Transform( 21 | alignment: Alignment.center, 22 | transform: Matrix4.skewY(0.1), 23 | child: Container( 24 | padding: const EdgeInsets.all(8.0), 25 | color: const Color(0xFFE8581C), 26 | child: const Text('Apartment for rent!'), 27 | ), 28 | ), 29 | ); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/widget/vision/transform/index.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:efox_flutter/components/widget_comp.dart' as widget_comp; 3 | import 'demo.dart' as Demo; 4 | 5 | class Index extends StatefulWidget { 6 | static String title = 'Transform'; 7 | static String mdUrl = 'docs/widget/vision/transform/index.md'; 8 | static String originCodeUrl = 'https://docs.flutter.io/flutter/widgets/Transform-class.html'; 9 | 10 | @override 11 | _IndexState createState() => new _IndexState(); 12 | } 13 | 14 | class _IndexState extends State { 15 | @override 16 | Widget build(BuildContext context) { 17 | return widget_comp.Index( 18 | title: Index.title, 19 | originCodeUrl: Index.originCodeUrl, 20 | mdUrl: Index.mdUrl, 21 | demoChild: [ 22 | Demo.Index(), 23 | ], 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /readme/1.0.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2.png -------------------------------------------------------------------------------- /readme/1.0.2/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/1.jpg -------------------------------------------------------------------------------- /readme/1.0.2/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/2.jpg -------------------------------------------------------------------------------- /readme/1.0.2/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/3.jpg -------------------------------------------------------------------------------- /readme/1.0.2/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/4.jpg -------------------------------------------------------------------------------- /readme/1.0.2/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/5.jpg -------------------------------------------------------------------------------- /readme/1.0.2/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/1.0.2/6.jpg -------------------------------------------------------------------------------- /readme/apk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/apk.png -------------------------------------------------------------------------------- /readme/background.md: -------------------------------------------------------------------------------- 1 | # 项目背景 2 | * Google推出Flutter跨平台解决方案,渐渐地受到了开发者们的关注,结合dart使用,能够用一套代码实现开发iOS与Android两套应用,同时也是谷歌的下一代操作系统 Fuchsia 的开发框架,未来还将可以直接编译成桌面应用。 3 | * Flutter拥有丰富的组件库,多样化的主题与UI风格,让开发者更简单的上手完成界面交互,从而提高了开发效率。 4 | * 此套组件库在几次没有硝烟的研讨中,命名为"Flutter UI",使命为"知识千万点,学习第一条。代码快点敲,bug无数行"。没错,就是这么不押韵。 -------------------------------------------------------------------------------- /readme/flutter_ui2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/flutter_ui2.gif -------------------------------------------------------------------------------- /readme/flutter_ui3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/flutter_ui3.gif -------------------------------------------------------------------------------- /readme/git.md: -------------------------------------------------------------------------------- 1 | # git使用规范 2 | ## 提交规范 3 | + feat:新功能(feature) 4 | + fix:修补bug 5 | + docs:文档(documentation) 6 | + style: 格式(不影响代码运行的变动) 7 | + refactor:重构(即不是新增功能,也不是修改bug的代码变动) 8 | + test:增加测试 9 | + chore:构建过程或辅助工具的变动 -------------------------------------------------------------------------------- /readme/google_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/google_play.png -------------------------------------------------------------------------------- /readme/qq-qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/readme/qq-qrcode.png -------------------------------------------------------------------------------- /readme/qq.md: -------------------------------------------------------------------------------- 1 | # 开发者如何参与完善控件 2 | 3 | 4 | 欢迎有兴趣的小伙伴QQ扫描以上二维码参与进来,一同完善组件 5 | 同时也可以把相关问题通过[issues](https://github.com/efoxTeam/flutter-ui/issues)方式与我们联系 6 | -------------------------------------------------------------------------------- /readme/v1.0.0_preview.md: -------------------------------------------------------------------------------- 1 | 2 | # app预览 3 | 4 | ![Alt 预览](flutter_ui2.gif) 5 | ![Alt 预览](flutter_ui3.gif) -------------------------------------------------------------------------------- /res/values/strings_en.arb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YYFlutter/flutter-ui/e0919a867dfcec7d636bf3df5082c8bb670d3f26/res/values/strings_en.arb -------------------------------------------------------------------------------- /version.json: -------------------------------------------------------------------------------- 1 | {"version":"1.0.4"} 2 | --------------------------------------------------------------------------------