├── .ci
└── Dockerfile
├── .cirrus.yml
├── .github
└── ISSUE_TEMPLATE
│ ├── bug-report.md
│ ├── feature-request.md
│ ├── page-about.md
│ └── question.md
├── .gitignore
├── CHANGE-LOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Flutter_Go 代码开发规范.md
├── LICENSE
├── README-en.md
├── README.md
├── 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
│ ├── release
│ │ ├── app-release.apk
│ │ └── output.json
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── fluttergo
│ │ │ │ └── ali
│ │ │ │ └── com
│ │ │ │ └── fluttergo
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable
│ │ │ ├── flutter_go_logo.png
│ │ │ ├── launch_background.xml
│ │ │ ├── logo.png
│ │ │ └── splash.png
│ │ │ ├── layout
│ │ │ └── activity_main.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_logo.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_logo.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_logo.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_logo.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_logo.png
│ │ │ └── spalsh.png
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── key.properties
└── settings.gradle
├── assets
├── app.db
├── fonts
│ ├── Flamante-Roma-Medium.ttf
│ ├── Flamante-Roma-MediumItalic.ttf
│ └── Lato-Bold.ttf
└── images
│ ├── FlutterGo.png
│ ├── ali_connors.png
│ ├── arrow.png
│ ├── btn_icon_dingyuehao_normal.png
│ ├── calendar.png
│ ├── food01.jpeg
│ ├── food02.jpeg
│ ├── food03.jpeg
│ ├── food04.jpeg
│ ├── food05.jpeg
│ ├── food06.jpeg
│ ├── gitHub.png
│ ├── house.png
│ ├── normal_user_icon.png
│ ├── nothing.png
│ ├── p1.png
│ ├── p2.png
│ ├── p3.png
│ ├── paimaiLogo.png
│ ├── painterImg.jpeg
│ ├── plane.png
│ └── timg.jpeg
├── docs
├── api.md
├── contribute.md
├── go-cli.md
├── needWidget.md
├── push-pr.md
└── widget.md
├── go-cli
├── Readme.md
├── bin
│ └── goCli.dart
├── config.json
├── pubspec.yaml
├── src
│ ├── build
│ │ ├── build_demo_list.dart
│ │ └── build_page_list.dart
│ ├── cli_command_runder.dart
│ ├── command
│ │ ├── build.dart
│ │ ├── create_demo.dart
│ │ ├── create_page.dart
│ │ └── watch_md.dart
│ ├── config.dart
│ ├── exception
│ │ └── demo.dart
│ └── version.dart
└── utils
│ ├── tpl.md
│ └── util.dart
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── flutter_export_environment.sh
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
├── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── 1024x1024@as.png
│ │ │ ├── 120x120@2x-1.png
│ │ │ ├── 120x120@2x.png
│ │ │ ├── 152x152.png
│ │ │ ├── 167x167.png
│ │ │ ├── 180x180@3x.png
│ │ │ ├── 20x20.png
│ │ │ ├── 29x29@1x-2.png
│ │ │ ├── 29x29@1x.png
│ │ │ ├── 40x40@1x-1.png
│ │ │ ├── 40x40@1x-2.png
│ │ │ ├── 40x40@1x.png
│ │ │ ├── 58x58@2x-1.png
│ │ │ ├── 58x58@2x.png
│ │ │ ├── 60x60@3x.png
│ │ │ ├── 76x76.png
│ │ │ ├── 80x80@2x-1.png
│ │ │ ├── 80x80@2x.png
│ │ │ ├── 87x87.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ ├── Image.imageset
│ │ │ └── Contents.json
│ │ ├── Launch2.launchimage
│ │ │ ├── Contents.json
│ │ │ ├── iPad Landscape.png
│ │ │ ├── iPad Landscape@2x.png
│ │ │ ├── iPad Portrait.png
│ │ │ ├── iPad Portrait@2x.png
│ │ │ ├── iPhone Portrait-Retina 4.png
│ │ │ ├── iPhone Portrait-Retina HD 4.7.png
│ │ │ ├── iPhone Portrait-Retina HD 5.5.png
│ │ │ ├── iPhone Portrait@2x.png
│ │ │ ├── iPhone XR Portrait.png
│ │ │ ├── iPhone XS Max Portrait.png
│ │ │ └── iPhone X_XS Portrait.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── README.md
│ │ │ ├── flutter go-1.png
│ │ │ ├── flutter go-2.png
│ │ │ └── flutter go.png
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── GoogleService-Info.plist
│ ├── Images.xcassets
│ │ └── LaunchImage-2.launchimage
│ │ │ └── Contents.json
│ ├── Info.plist
│ ├── Runner-Bridging-Header.h
│ ├── Runner.entitlements
│ └── main.m
├── flutter go.png
└── launch
│ ├── iPad Landscape.png
│ ├── iPad Landscape@2x.png
│ ├── iPad Portrait.png
│ ├── iPad Portrait@2x.png
│ ├── iPhone Landscape-Retina HD 5.5.png
│ ├── iPhone Portrait-Retina 4.png
│ ├── iPhone Portrait-Retina HD 4.7.png
│ ├── iPhone Portrait-Retina HD 5.5.png
│ ├── iPhone Portrait@2x.png
│ ├── iPhone XR Landscape.png
│ ├── iPhone XR Portrait.png
│ ├── iPhone XS Max Landscape.png
│ ├── iPhone XS Max Portrait.png
│ ├── iPhone X_XS Landscape.png
│ └── iPhone X_XS Portrait.png
├── lib
├── api
│ └── api.dart
├── blocs
│ ├── industry_api.dart
│ ├── industry_bloc.dart
│ ├── industry_event.dart
│ ├── industry_main.dart
│ ├── industry_model.dart
│ ├── industry_state.dart
│ └── search_result.dart
├── components
│ ├── cate_card.dart
│ ├── category.dart
│ ├── disclaimer_msg.dart
│ ├── flutter_markdown
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── lib
│ │ │ ├── flutter_markdown.dart
│ │ │ └── src
│ │ │ ├── builder.dart
│ │ │ ├── style_sheet.dart
│ │ │ └── widget.dart
│ ├── full_screen_code_dialog.dart
│ ├── home_banner.dart
│ ├── list_refresh.dart
│ ├── list_view_item.dart
│ ├── loading.dart
│ ├── markdown.dart
│ ├── pagination.dart
│ ├── search_input.dart
│ ├── single_theme_color.dart
│ ├── widget_demo.dart
│ ├── widget_item.dart
│ └── widget_item_container.dart
├── event
│ ├── event_bus.dart
│ └── event_model.dart
├── main.dart
├── model
│ ├── base.dart
│ ├── cat.dart
│ ├── collection.dart
│ ├── responseData.dart
│ ├── search_history.dart
│ ├── story.dart
│ ├── user_info.dart
│ ├── user_info_cache.dart
│ ├── version.dart
│ └── widget.dart
├── page_demo_package
│ ├── .demo.json
│ ├── PullToRefresh_chenfeihu_5553db80_52ae_4241_9c8a_5c9e1f92b096
│ │ ├── .demo.json
│ │ ├── index.dart
│ │ └── src
│ │ │ └── index.dart
│ ├── RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096
│ │ ├── .demo.json
│ │ ├── index.dart
│ │ └── src
│ │ │ └── index.dart
│ ├── demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
│ │ ├── .demo.json
│ │ ├── index.dart
│ │ └── src
│ │ │ └── index.dart
│ ├── index.dart
│ ├── info.json
│ ├── local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096
│ │ ├── .demo.json
│ │ ├── index.dart
│ │ └── src
│ │ │ └── index.dart
│ └── readme.md
├── resources
│ ├── icon_names.dart
│ ├── shared_preferences_keys.dart
│ └── widget_name_to_icon.dart
├── routers
│ ├── application.dart
│ ├── router_handler.dart
│ └── routers.dart
├── standard_pages
│ ├── .pages.json
│ ├── PullToRefresh_chenfeihu_cd9b8b80_52ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
│ ├── RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
│ ├── index.dart
│ ├── local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
│ ├── standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
│ ├── standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
│ └── test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096
│ │ ├── .page.json
│ │ ├── index.dart
│ │ └── index.md
├── utils
│ ├── analytics.dart
│ ├── data_utils.dart
│ ├── example_code_parser.dart
│ ├── high_light_code.dart
│ ├── net_utils.dart
│ ├── provider.dart
│ ├── shared_preferences.dart
│ ├── sql.dart
│ ├── style.dart
│ ├── syntax_highlighter.dart
│ └── util.dart
├── views
│ ├── collection_page
│ │ ├── collection_full_page.dart
│ │ └── collection_page.dart
│ ├── first_page
│ │ ├── drawer_page.dart
│ │ ├── first_page.dart
│ │ ├── first_page_item.dart
│ │ ├── main_app_bar.dart
│ │ ├── main_page.dart
│ │ ├── search_page.dart
│ │ └── sub_page.dart
│ ├── fourth_page
│ │ ├── page_dragger.dart
│ │ ├── page_reveal.dart
│ │ ├── pager_indicator.dart
│ │ └── pages.dart
│ ├── home.dart
│ ├── issuse_message_page
│ │ └── issuse_message_page.dart
│ ├── login_page
│ │ └── login_page.dart
│ ├── standard_demo_page
│ │ └── index.dart
│ ├── user_page
│ │ └── user_page.dart
│ ├── web_page
│ │ └── web_view_page.dart
│ ├── welcome_page
│ │ ├── fourth_page.dart
│ │ └── index.dart
│ └── widget_page
│ │ └── widget_page.dart
└── widgets
│ ├── 404.dart
│ ├── components
│ ├── Bar
│ │ ├── AppBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── BottomAppBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ButtonBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── FlexibleSpaceBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── SliverAppBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── SnackBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── SnackBarAction
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── TabBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Card
│ │ ├── Card
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Chip
│ │ ├── Chip
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ChipTheme
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ChipThemeData
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ChoiceChip
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── FilterChip
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── InputChip
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── RawChip
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Dialog
│ │ ├── AboutDialog
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── AlertDialog
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── Dialog
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── SimpleDialog
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Grid
│ │ ├── GridPaper
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── GridTile
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── GridTileBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── GridView
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── SliverGrid
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── List
│ │ ├── AnimatedList
│ │ │ ├── demo.dart
│ │ │ ├── index.dart
│ │ │ └── model.dart
│ │ ├── ListBody
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ListView
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Menu
│ │ ├── CheckedPopupMenuItem
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── DropdownMenuItem
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── PopupMenuButton
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── PopupMenuDivider
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── PopupMenuEntry
│ │ │ └── index.dart
│ │ ├── PopupMenuItem
│ │ │ └── index.dart
│ │ ├── PopupMenuItemState
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Navigation
│ │ ├── BottomNavigationBar
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── BottomNavigationBarItem
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Panel
│ │ ├── ExpansionPanel
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ExpansionPanelList
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ExpansionPanelRadio
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Pick
│ │ ├── CityPIcker
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── DayPicker
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── MonthPicker
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ShowdatePicker
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── YearPicker
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Progress
│ │ ├── CircularProgressIndicator
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── LinearProgressIndicator
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── RefreshProgressIndicator
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Scaffold
│ │ ├── Scaffold
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ScaffoldState
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Scroll
│ │ ├── BoxScrollView
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── CustomScrollView
│ │ │ ├── demo.dart
│ │ │ ├── index.dart
│ │ │ └── product_list.dart
│ │ ├── NestedScrollView
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ScrollMetrics
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ScrollPhysics
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ScrollView
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── Scrollable
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ ├── ScrollbarPainter
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Tab
│ │ ├── Tab
│ │ │ ├── demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ └── index.dart
│ ├── elements
│ ├── Form
│ │ ├── Button
│ │ │ ├── DropdownButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── FlatButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── FloatingActionButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── IconButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── OutlineButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── PopupMenuButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── RaisedButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── RawMaterialButton
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── CheckBox
│ │ │ ├── Checkbox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── CheckboxListTile
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Input
│ │ │ ├── TextField
│ │ │ │ ├── index.dart
│ │ │ │ └── text_field_demo.dart
│ │ │ └── index.dart
│ │ ├── Radio
│ │ │ ├── Radio
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── RadioListTile
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Slider
│ │ │ ├── Slider
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── SliderTheme
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── SliderThemeData
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Switch
│ │ │ ├── AnimatedSwitcher
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Switch
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── SwitchListTile
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Text
│ │ │ ├── RichText
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Text
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Frame
│ │ ├── Align
│ │ │ ├── Align
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Box
│ │ │ ├── ConstrainedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── DecoratedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── FittedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── LimitedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── OverflowBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── RotatedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── SizeBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── SizedOverflowBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── UnconstrainedBox
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Expanded
│ │ │ ├── Expanded
│ │ │ │ ├── expanded_demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Layout
│ │ │ ├── Center
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Column
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Container
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Row
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Spacing
│ │ │ ├── AnimatedPadding
│ │ │ │ ├── animatedPadding_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Padding
│ │ │ │ ├── index.dart
│ │ │ │ └── padding_demo.dart
│ │ │ ├── SliverPadding
│ │ │ │ ├── index.dart
│ │ │ │ ├── product_list.dart
│ │ │ │ └── sliverpadding_demo.dart
│ │ │ └── index.dart
│ │ ├── Stack
│ │ │ ├── IndexedStack
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Stack
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Table
│ │ │ ├── Table
│ │ │ │ ├── index.dart
│ │ │ │ └── table_demo.dart
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── Media
│ │ ├── Canvas
│ │ │ ├── Canvas
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── CircleProgressBarPainter
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── PainterPath
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── PainterSketch
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Icon
│ │ │ ├── Icon
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── IconData
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── IconTheme
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── IconThemeData
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── ImageIcon
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ └── index.dart
│ │ ├── Image
│ │ │ ├── AssetImage
│ │ │ │ ├── assetImage_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── DecorationImage
│ │ │ │ ├── decorationImage_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── DecorationImagePainter
│ │ │ │ ├── decoration_image_painter_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── ExactAssetImage
│ │ │ │ ├── exact_asset_image_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── FadeInImage
│ │ │ │ ├── fade_in_image_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── FileImage
│ │ │ │ ├── file_image_demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── Image
│ │ │ │ ├── demo.dart
│ │ │ │ └── index.dart
│ │ │ ├── MemoryImage
│ │ │ │ ├── index.dart
│ │ │ │ └── memory_image_demo.dart
│ │ │ ├── NetworkImage
│ │ │ │ ├── index.dart
│ │ │ │ └── network_image_demo.dart
│ │ │ ├── RawImage
│ │ │ │ ├── index.dart
│ │ │ │ └── raw_image_demo.dart
│ │ │ ├── index.dart
│ │ │ ├── paintImage
│ │ │ │ ├── index.dart
│ │ │ │ └── paint_image_demo.dart
│ │ │ └── precacheImage
│ │ │ │ ├── index.dart
│ │ │ │ └── precache_image_demo.dart
│ │ └── index.dart
│ └── index.dart
│ ├── index.dart
│ └── themes
│ ├── Cupertino
│ ├── CupertinoApp
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoButton
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoColors
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoIcons
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoNavigationBar
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoPageRoute
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoPageScaffold
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoPicker
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoPopupSurface
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoScrollbar
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoSegmentedControl
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoSlider
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoSliverNavigationBar
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoSwitch
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoTabBar
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoTabScaffold
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoTabView
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── CupertinoTimerPicker
│ │ ├── demo.dart
│ │ └── index.dart
│ └── index.dart
│ ├── Material
│ ├── MaterialAccentColor
│ │ └── index.dart
│ ├── MaterialApp
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── MaterialButton
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── MaterialColor
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── MaterialPageRoute
│ │ ├── demo.dart
│ │ └── index.dart
│ ├── MergeableMaterialItem
│ │ ├── demo.dart
│ │ └── index.dart
│ └── index.dart
│ └── index.dart
├── mupp_build_env_init.sh
├── pubspec.yaml
├── recruit
├── test
├── imp.dart
├── imp2.dart
├── test.dart
└── widget_test.dart
└── tools
├── getPR.sh
└── parsLog.js
/.ci/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM cirrusci/flutter:stable
2 |
3 | RUN sudo apt-get update -y
4 |
5 | RUN sudo apt-get install -y --no-install-recommends gnupg
6 |
7 | # Add repo for gcloud sdk and install it
8 | RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \
9 | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
10 |
11 | RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \
12 | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
13 |
14 | RUN sudo apt-get update && sudo apt-get install -y google-cloud-sdk && \
15 | gcloud config set core/disable_usage_reporting true && \
16 | gcloud config set component_manager/disable_update_check true
17 |
18 | RUN yes | sdkmanager \
19 | "platforms;android-29" \
20 | "build-tools;29.0.2" \
21 | "extras;google;m2repository" \
22 | "extras;android;m2repository"
23 |
24 | RUN yes | sdkmanager \
25 | "platforms;android-28" \
26 | "build-tools;28.0.3" \
27 | "extras;google;m2repository" \
28 | "extras;android;m2repository"
29 |
30 | RUN yes | sdkmanager --licenses
31 |
--------------------------------------------------------------------------------
/.cirrus.yml:
--------------------------------------------------------------------------------
1 | task:
2 | use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true' && $CIRRUS_PR == ''
3 | container:
4 | dockerfile: .ci/Dockerfile
5 | cpu: 8
6 | memory: 16G
7 | pub_cache:
8 | folder: ~/.pub-cache
9 | setup_script:
10 | - flutter channel stable
11 | - flutter upgrade
12 | build_script:
13 | - flutter build apk
14 | test_script: flutter test
15 |
16 | task:
17 | use_compute_credits: $CIRRUS_USER_COLLABORATOR == 'true'
18 | osx_instance:
19 | #image: mojave-xcode-10.2-flutter
20 | image: mojave-flutter
21 | pub_cache:
22 | folder: ~/.pub-cache
23 | setup_script:
24 | - pod repo update
25 | - flutter channel stable
26 | - flutter upgrade
27 | create_simulator_script:
28 | - xcrun simctl list
29 | - xcrun simctl create Flutter-iPhone com.apple.CoreSimulator.SimDeviceType.iPhone-X com.apple.CoreSimulator.SimRuntime.iOS-12-2 | xargs xcrun simctl boot
30 | build_script:
31 | - flutter build ios --no-codesign
32 | test_script: flutter test
33 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F41B Bug Report"
3 | about: Something isn't working as expected
4 | ---
5 |
6 | ## Bug Report
7 |
8 | **仅限中文与英文**, 其他语言的提交将直接被关闭
9 |
10 | 请先确认查找了已有的 issue [GitHub issues](https://github.com/apache/incubator-shardingsphere-example/issues).
11 |
12 | 为了更好的收录您反馈或者提交的相关pr. 请您关注您提交的问题, 我们可能需要更多的详细信息, 我们会在issue下先您收集相关信息,
13 | 如果长时间未得到您的回复, 如果我们无法在某些环境上重现该问题, 并且您**超过7天未回复**, 我们可能会关 **闭掉issue**, 谢谢
14 |
15 |
16 | ### 您当前的flutter doctor信息
17 |
18 | ### 预期的表现
19 |
20 | ### 实际的表现
21 |
22 | ### 预期的分析 (给出您能想到, 任何您能想到的)
23 |
24 | ### 重现的方式, 例如从 A界面 点击 b, 跳转到B页面, 界面出现溢出乱码等.
25 |
26 | ### 用于重现此问题或者可能解决以上问题的示例代码(例如github 链接代码)
27 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F680 Feature Request"
3 | about: I have a suggestion
4 | ---
5 |
6 | ## Feature Request
7 |
8 | **仅限中文与英文**, 其他语言的提交将直接被关闭
9 |
10 | 请先确认查找了已有的 issue [GitHub issues](https://github.com/apache/incubator-shardingsphere-example/issues).
11 |
12 | 为了更好的收录您反馈或者提交的相关pr. 请您关注您提交的问题, 我们可能需要更多的详细信息, 我们会在issue下先您收集相关信息,
13 | 如果长时间未得到您的回复, 如果我们无法在某些环境上重现该问题, 并且您**超过7天未回复**, 我们可能会关 **闭掉issue**, 谢谢
14 |
15 |
16 | ### 您的功能需求是否与哪些问题有关?
17 |
18 | ### 描述您想要的功能.
19 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/question.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "\U0001F914 Question"
3 | about: Usage question that isn't answered in docs or discussion
4 | ---
5 |
6 | ## Question
7 |
8 | **仅限中文与英文**, 其他语言的提交将直接被关闭
9 |
10 | 请先确认查找了已有的 issue [GitHub issues](https://github.com/apache/incubator-shardingsphere-example/issues).
11 |
12 | 为了更好的收录您反馈或者提交的相关pr. 请您关注您提交的问题, 我们可能需要更多的详细信息, 我们会在issue下先您收集相关信息,
13 | 如果长时间未得到您的回复, 如果我们无法在某些环境上重现该问题, 并且您**超过7天未回复**, 我们可能会关 **闭掉issue**, 谢谢
14 |
15 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | [Flutter Go 共建](https://github.com/alibaba/flutter-go/blob/master/docs/contribute.md)
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FlutterGo
2 |
3 | 感谢大家一直以来对 FlutterGo 的支持与反馈。
4 |
5 |
6 |
7 | 但是 **由于团队内部组织调整变更**,很遗憾的宣布 FlutterGo 目前**暂停维护**。
8 |
9 |
10 |
11 | 但是后期我们会再升级迭代 FlutterGo 新版本,也同时希望更多Flutter爱好者参与加入。
12 |
13 |
14 |
15 | - 简历投递 邮箱:yifeng.yl@alibaba-inc.com
16 | - 钉钉扫码直接连接:
17 | -
18 |
--------------------------------------------------------------------------------
/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/google-services.json:
--------------------------------------------------------------------------------
1 | {
2 | "project_info": {
3 | "project_number": "611157827052",
4 | "firebase_url": "https://alibaba-flutter-go.firebaseio.com",
5 | "project_id": "alibaba-flutter-go",
6 | "storage_bucket": "alibaba-flutter-go.appspot.com"
7 | },
8 | "client": [
9 | {
10 | "client_info": {
11 | "mobilesdk_app_id": "1:611157827052:android:c6129e5eff2f125d",
12 | "android_client_info": {
13 | "package_name": "com.alibaba.fluttergo"
14 | }
15 | },
16 | "oauth_client": [
17 | {
18 | "client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
19 | "client_type": 3
20 | }
21 | ],
22 | "api_key": [
23 | {
24 | "current_key": "AIzaSyA9chxDIuds7gmPQTJPpDpoXyN9rDTdvhU"
25 | }
26 | ],
27 | "services": {
28 | "appinvite_service": {
29 | "other_platform_oauth_client": [
30 | {
31 | "client_id": "611157827052-iiuevj8qu56alpqh47v37j9sd4e40di7.apps.googleusercontent.com",
32 | "client_type": 3
33 | }
34 | ]
35 | }
36 | }
37 | }
38 | ],
39 | "configuration_version": "1"
40 | }
41 |
--------------------------------------------------------------------------------
/android/app/release/app-release.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/release/app-release.apk
--------------------------------------------------------------------------------
/android/app/release/output.json:
--------------------------------------------------------------------------------
1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.6","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/fluttergo/ali/com/fluttergo/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.alibaba.fluttergo
2 |
3 | import android.os.Bundle
4 |
5 | import io.flutter.app.FlutterActivity
6 | import io.flutter.plugins.GeneratedPluginRegistrant
7 |
8 | class MainActivity: FlutterActivity() {
9 | override fun onCreate(savedInstanceState: Bundle?) {
10 | super.onCreate(savedInstanceState)
11 | GeneratedPluginRegistrant.registerWith(this)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/flutter_go_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/drawable/flutter_go_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | -
8 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/drawable/logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/drawable/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-hdpi/ic_launcher_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-mdpi/ic_launcher_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xhdpi/ic_launcher_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_logo.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/spalsh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/android/app/src/main/res/mipmap-xxxhdpi/spalsh.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.0'
3 | repositories {
4 | google()
5 | jcenter()
6 | //Crashlytics SDK
7 | maven {
8 | url 'https://maven.fabric.io/public'
9 | }
10 | }
11 |
12 | dependencies {
13 | classpath 'com.android.tools.build:gradle:3.3.0'
14 | //firebase
15 | classpath 'com.google.gms:google-services:4.2.0'
16 | //Crashlytics SDK
17 | classpath 'io.fabric.tools:gradle:1.26.1'
18 | // 性能监控
19 | ///classpath 'com.google.firebase:firebase-plugins:1.1.5'
20 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
21 | }
22 | }
23 |
24 | allprojects {
25 | repositories {
26 | google()
27 | jcenter()
28 | //Crashlytics SDK
29 | maven {
30 | url 'https://maven.google.com/'
31 | }
32 | }
33 | }
34 |
35 | rootProject.buildDir = '../build'
36 | subprojects {
37 | project.buildDir = "${rootProject.buildDir}/${project.name}"
38 | }
39 | subprojects {
40 | project.evaluationDependsOn(':app')
41 | }
42 |
43 | task clean(type: Delete) {
44 | delete rootProject.buildDir
45 | }
46 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.enableJetifier=true
3 | android.useAndroidX=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Jan 10 15:37:36 CST 2019
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=fluttergo123
2 | keyPassword=fluttergo123
3 | keyAlias=key
4 | storeFile=/Users/xj.deng/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/app.db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/app.db
--------------------------------------------------------------------------------
/assets/fonts/Flamante-Roma-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/fonts/Flamante-Roma-Medium.ttf
--------------------------------------------------------------------------------
/assets/fonts/Flamante-Roma-MediumItalic.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/fonts/Flamante-Roma-MediumItalic.ttf
--------------------------------------------------------------------------------
/assets/fonts/Lato-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/fonts/Lato-Bold.ttf
--------------------------------------------------------------------------------
/assets/images/FlutterGo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/FlutterGo.png
--------------------------------------------------------------------------------
/assets/images/ali_connors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/ali_connors.png
--------------------------------------------------------------------------------
/assets/images/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/arrow.png
--------------------------------------------------------------------------------
/assets/images/btn_icon_dingyuehao_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/btn_icon_dingyuehao_normal.png
--------------------------------------------------------------------------------
/assets/images/calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/calendar.png
--------------------------------------------------------------------------------
/assets/images/food01.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food01.jpeg
--------------------------------------------------------------------------------
/assets/images/food02.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food02.jpeg
--------------------------------------------------------------------------------
/assets/images/food03.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food03.jpeg
--------------------------------------------------------------------------------
/assets/images/food04.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food04.jpeg
--------------------------------------------------------------------------------
/assets/images/food05.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food05.jpeg
--------------------------------------------------------------------------------
/assets/images/food06.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/food06.jpeg
--------------------------------------------------------------------------------
/assets/images/gitHub.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/gitHub.png
--------------------------------------------------------------------------------
/assets/images/house.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/house.png
--------------------------------------------------------------------------------
/assets/images/normal_user_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/normal_user_icon.png
--------------------------------------------------------------------------------
/assets/images/nothing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/nothing.png
--------------------------------------------------------------------------------
/assets/images/p1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/p1.png
--------------------------------------------------------------------------------
/assets/images/p2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/p2.png
--------------------------------------------------------------------------------
/assets/images/p3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/p3.png
--------------------------------------------------------------------------------
/assets/images/paimaiLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/paimaiLogo.png
--------------------------------------------------------------------------------
/assets/images/painterImg.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/painterImg.jpeg
--------------------------------------------------------------------------------
/assets/images/plane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/plane.png
--------------------------------------------------------------------------------
/assets/images/timg.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/assets/images/timg.jpeg
--------------------------------------------------------------------------------
/docs/needWidget.md:
--------------------------------------------------------------------------------
1 | #待加入的组件
2 |
3 | 以下是flutter go 中缺失的部分组件. 欢迎大家共建.参与方式请看[共建说明](https://github.com/alibaba/flutter-go/blob/master/docs/contribute.md)
4 |
注:✔表明已加入
5 |
6 | - [x] Scaffold
7 | - [ ] Hero
8 | - [ ] Listener
9 | - [ ] Safearea
10 | - [ ] ClipRect
11 | - [ ] WillPopScope
12 | - [ ] FutureBuilder
13 | - [ ] StreamBuilder
14 | - [ ] Notification
15 | - [ ] runZoned
16 | - [ ] IgnorePointer
17 | - [ ] AbsorbPointer
18 | - [ ] FlutterLogo
19 | - [ ] Placeholder
20 | - [ ] Offstage
21 | - [ ] Visibility
22 | - [ ] Baseline
23 | - [ ] CustomPainter
24 | - [ ] Border
25 | - [ ] Wrap
26 | - [ ] Transform
27 | - [ ] SingleChildScrollView
28 | - [ ] Positioned
29 | - [ ] InheritedWidget
30 | - [ ] PageView
31 | - [ ] LayoutBuilder
32 | - [ ] MediaQuery
33 | - [ ] RefreshIndicator
34 | - [ ] Opacity
35 | - [ ] ExcludeSemantics
36 | - [ ] DataTable
37 | - [ ] Tooltip
38 | - [ ] Form
39 | - [ ] FormField
--------------------------------------------------------------------------------
/docs/push-pr.md:
--------------------------------------------------------------------------------
1 | # 如何为一个项目提PR
2 |
3 |
4 | ## PR 的含义
5 |
6 | PR的全称是 **pull request**, 可以理解成. 让开源项目拉取合并他方的请求.
7 |
8 |
9 | ## pull request
10 |
11 | 1. 将 开源flutter go项目 fork到我们自己的仓库.
12 |
13 | 
14 |
15 | 2. 将Fork的仓库 clone 到本地,进行本地修改.
16 |
17 | 3. 将改动push到自己的仓库中
18 |
19 |
20 | ```
21 | git add {some change file}
22 | git commit ...
23 | git push origin {your branch}
24 |
25 | ```
26 |
27 |
28 | 4. 登陆github, 从**自己的仓库**向**开源项目仓库** 发起 **pull request** (合并申请);
29 |
30 | 过程参考:
31 |
32 | 
33 |
34 |
35 | 5. 开源项目维护者会review您的 **pull request**,展开讨论或者修改, 一旦通过审核,开源项目维护者合并该分支到正式仓库然后并关闭合并申请。
--------------------------------------------------------------------------------
/go-cli/bin/goCli.dart:
--------------------------------------------------------------------------------
1 | import 'package:args/args.dart'; // 使用其中两个类ArgParser和ArgResults
2 | import 'package:args/command_runner.dart';
3 | import '../src/cli_command_runder.dart';
4 | ArgResults argResults; // 声明ArgResults类型的顶级变量,保存解析的参数结果
5 |
6 | // 同时,argResults也是ArgResults的实例
7 | void main(List args) async {
8 | // createDemo();
9 | try {
10 | await run(args);
11 | } on UsageException catch (e) {
12 |
13 | print(' ');
14 | print(e.usage);
15 |
16 | }
17 | }
--------------------------------------------------------------------------------
/go-cli/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sanfan"
3 | }
--------------------------------------------------------------------------------
/go-cli/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: goCli
2 | description: bin_go
3 |
4 | # The following defines the version and build number for your application.
5 | # A version number is three numbers separated by dots, like 1.2.43
6 | # followed by an optional build number separated by a +.
7 | # Both the version and the builder number may be overridden in flutter
8 | # build by specifying --build-name and --build-number, respectively.
9 | # Read more about versioning at semver.org.
10 | version: 1.0.0
11 | executables:
12 | goCli:
13 | environment:
14 | sdk: ">=2.1.0 <3.0.0"
15 |
16 | dependencies:
17 | args: '^1.5.1'
18 | dart_inquirer: '^1.0.0'
19 | watcher: ^0.9.7+10
20 | mustache: ^1.1.1
21 |
22 | dev_dependencies:
23 |
24 |
25 |
--------------------------------------------------------------------------------
/go-cli/src/command/build.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with Android Studio.
3 | // User: 三帆
4 | // Date: 30/07/2019
5 | // Time: 16:51
6 | // email: sanfan.hx@alibaba-inc.com
7 | // target: build
8 | //
9 |
10 |
11 | import 'package:args/command_runner.dart';
12 | import '../build/build_demo_list.dart';
13 | import '../build/build_page_list.dart';
14 |
15 |
16 | import 'dart:async';
17 |
18 |
19 | class Build extends Command {
20 | @override
21 | final name = 'build';
22 | @override
23 | final description = '生成索引等';
24 |
25 |
26 | @override
27 | Future run() async {
28 | buildPageListJson();
29 | buildDemoListJson();
30 | return 0;
31 | }
32 | }
--------------------------------------------------------------------------------
/go-cli/src/config.dart:
--------------------------------------------------------------------------------
1 | // 生成Demo的目录位置
2 | const TARGET_PAGE_DIC = 'lib/standard_pages';
3 | const TARGET_DEMO_DIC = 'lib/page_demo_package';
4 |
5 |
--------------------------------------------------------------------------------
/go-cli/src/exception/demo.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with Android Studio.
3 | // User: 三帆
4 | // Date: 25/05/2019
5 | // Time: 21:20
6 | // email: sanfan.hx@alibaba-inc.com
7 | // target: xxx
8 | //
9 |
10 |
11 | import 'package:console/console.dart';
12 |
13 | class InvalidDemo implements Exception {
14 | final String details;
15 | InvalidDemo(this.details);
16 |
17 | @override
18 | String toString() {
19 | return format('{color.red}Invalid demo happends: $details {color.normal}');
20 | }
21 | }
--------------------------------------------------------------------------------
/go-cli/src/version.dart:
--------------------------------------------------------------------------------
1 | const packageVersion = '1.0.0';
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .vagrant/
3 | .sconsign.dblite
4 | .svn/
5 |
6 | .DS_Store
7 | *.swp
8 | profile
9 |
10 | DerivedData/
11 | build/
12 | GeneratedPluginRegistrant.h
13 | GeneratedPluginRegistrant.m
14 |
15 | .generated/
16 |
17 | *.pbxuser
18 | *.mode1v3
19 | *.mode2v3
20 | *.perspectivev3
21 |
22 | !default.pbxuser
23 | !default.mode1v3
24 | !default.mode2v3
25 | !default.perspectivev3
26 |
27 | xcuserdata
28 |
29 | *.moved-aside
30 |
31 | *.pyc
32 | *sync/
33 | Icon?
34 | .tags*
35 |
36 | /Flutter/app.flx
37 | /Flutter/app.zip
38 | /Flutter/flutter_assets/
39 | /Flutter/App.framework
40 | /Flutter/Flutter.framework
41 | /Flutter/Generated.xcconfig
42 | /ServiceDefinitions.json
43 |
44 | Pods/
45 | .symlinks/
46 |
--------------------------------------------------------------------------------
/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/Flutter/flutter_export_environment.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # This is a generated file; do not edit or check into version control.
3 | export "FLUTTER_ROOT=/Users/xj.deng/development/flutter"
4 | export "FLUTTER_APPLICATION_PATH=/Users/xj.deng/alibaba/xj_fluttergo/flutter-go"
5 | export "FLUTTER_TARGET=lib/main.dart"
6 | export "FLUTTER_BUILD_DIR=build"
7 | export "SYMROOT=${SOURCE_ROOT}/../build/ios"
8 | export "FLUTTER_FRAMEWORK_DIR=/Users/xj.deng/development/flutter/bin/cache/artifacts/engine/ios-release"
9 | export "FLUTTER_BUILD_NAME=1.0.6"
10 | export "FLUTTER_BUILD_NUMBER=1.0.6"
11 |
--------------------------------------------------------------------------------
/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.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Original
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 | #include "FlutterJPushPlugin.h"
4 |
5 | @import Firebase;//增加 firebase 支持
6 |
7 | @implementation AppDelegate
8 |
9 | - (BOOL)application:(UIApplication *)application
10 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
11 |
12 | [FIRApp configure];//增加 firebase 支持
13 |
14 | [self startupJPush:launchOptions appKey:@"62eb07d227d1f11dd7fa6239" channel:@"jpush" isProduction:FALSE];
15 |
16 | [GeneratedPluginRegistrant registerWithRegistry:self];
17 | // Override point for customization after application launch.
18 | [NSThread sleepForTimeInterval:2];
19 | return [super application:application didFinishLaunchingWithOptions:launchOptions];
20 | }
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024x1024@as.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024x1024@as.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/152x152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/167x167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/167x167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/180x180@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/180x180@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/20x20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/20x20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29@1x-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29@1x-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/76x76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80@2x-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80@2x-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/87x87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/AppIcon.appiconset/87x87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Image.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "scale" : "2x"
10 | },
11 | {
12 | "idiom" : "universal",
13 | "scale" : "3x"
14 | }
15 | ],
16 | "info" : {
17 | "version" : 1,
18 | "author" : "xcode"
19 | }
20 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Landscape.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Landscape@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Portrait.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPad Portrait@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina 4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina 4.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina HD 4.7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina HD 4.7.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina HD 5.5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait-Retina HD 5.5.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone Portrait@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone XR Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone XR Portrait.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone XS Max Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone XS Max Portrait.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone X_XS Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/Launch2.launchimage/iPhone X_XS Portrait.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "flutter go.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "flutter go-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "flutter go-2.png",
16 | "scale" : "3x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "1x"
21 | },
22 | {
23 | "idiom" : "iphone",
24 | "scale" : "2x"
25 | },
26 | {
27 | "idiom" : "iphone",
28 | "scale" : "3x"
29 | }
30 | ],
31 | "info" : {
32 | "version" : 1,
33 | "author" : "xcode"
34 | }
35 | }
--------------------------------------------------------------------------------
/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/flutter go-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go.png
--------------------------------------------------------------------------------
/ios/Runner/Images.xcassets/LaunchImage-2.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "ipad",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "1x"
9 | },
10 | {
11 | "orientation" : "landscape",
12 | "idiom" : "ipad",
13 | "extent" : "full-screen",
14 | "minimum-system-version" : "7.0",
15 | "scale" : "1x"
16 | },
17 | {
18 | "orientation" : "portrait",
19 | "idiom" : "ipad",
20 | "extent" : "full-screen",
21 | "minimum-system-version" : "7.0",
22 | "scale" : "2x"
23 | },
24 | {
25 | "orientation" : "landscape",
26 | "idiom" : "ipad",
27 | "extent" : "full-screen",
28 | "minimum-system-version" : "7.0",
29 | "scale" : "2x"
30 | }
31 | ],
32 | "info" : {
33 | "version" : 1,
34 | "author" : "xcode"
35 | }
36 | }
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
--------------------------------------------------------------------------------
/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/flutter go.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/flutter go.png
--------------------------------------------------------------------------------
/ios/launch/iPad Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPad Landscape.png
--------------------------------------------------------------------------------
/ios/launch/iPad Landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPad Landscape@2x.png
--------------------------------------------------------------------------------
/ios/launch/iPad Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPad Portrait.png
--------------------------------------------------------------------------------
/ios/launch/iPad Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPad Portrait@2x.png
--------------------------------------------------------------------------------
/ios/launch/iPhone Landscape-Retina HD 5.5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone Landscape-Retina HD 5.5.png
--------------------------------------------------------------------------------
/ios/launch/iPhone Portrait-Retina 4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone Portrait-Retina 4.png
--------------------------------------------------------------------------------
/ios/launch/iPhone Portrait-Retina HD 4.7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone Portrait-Retina HD 4.7.png
--------------------------------------------------------------------------------
/ios/launch/iPhone Portrait-Retina HD 5.5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone Portrait-Retina HD 5.5.png
--------------------------------------------------------------------------------
/ios/launch/iPhone Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone Portrait@2x.png
--------------------------------------------------------------------------------
/ios/launch/iPhone XR Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone XR Landscape.png
--------------------------------------------------------------------------------
/ios/launch/iPhone XR Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone XR Portrait.png
--------------------------------------------------------------------------------
/ios/launch/iPhone XS Max Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone XS Max Landscape.png
--------------------------------------------------------------------------------
/ios/launch/iPhone XS Max Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone XS Max Portrait.png
--------------------------------------------------------------------------------
/ios/launch/iPhone X_XS Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone X_XS Landscape.png
--------------------------------------------------------------------------------
/ios/launch/iPhone X_XS Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/ios/launch/iPhone X_XS Portrait.png
--------------------------------------------------------------------------------
/lib/blocs/industry_event.dart:
--------------------------------------------------------------------------------
1 | ///
2 | /// Created with Android Studio.
3 | /// User: 一晟
4 | /// Date: 2019/4/28
5 | /// Time: 3:35 PM
6 | /// email: zhu.yan@alibaba-inc.com
7 | ///
8 | abstract class SuggestionEvent {}
9 |
10 | class SuggestionFetch extends SuggestionEvent {
11 | final String query;
12 |
13 | SuggestionFetch({this.query});
14 |
15 | @override
16 | String toString() => 'SuggestionFetch:获取关键字提示事件';
17 | }
18 |
19 | class SuggestionClearFetch extends SuggestionEvent {
20 | final String query;
21 |
22 | SuggestionClearFetch({this.query});
23 |
24 | @override
25 | String toString() => 'SuggestionClearFetch:清空界面';
26 | }
27 |
--------------------------------------------------------------------------------
/lib/blocs/industry_state.dart:
--------------------------------------------------------------------------------
1 | ///
2 | /// Created with Android Studio.
3 | /// User: 一晟
4 | /// Date: 2019/4/28
5 | /// Time: 3:37 PM
6 | /// email: zhu.yan@alibaba-inc.com
7 | ///
8 | abstract class SuggestionState {}
9 |
10 | class SuggestionError extends SuggestionState {
11 | @override
12 | String toString() => 'SuggestionError:获取失败';
13 | }
14 |
15 | class SuggestionUninitialized extends SuggestionState {
16 | @override
17 | String toString() => 'SuggestionUninitialized:未初始化';
18 | }
19 |
20 | class SuggestionLoading extends SuggestionState {
21 | @override
22 | String toString() => 'SuggestionLoading :正在加载';
23 | }
24 |
25 | class SuggestionLoaded extends SuggestionState {
26 | final List res;
27 |
28 | SuggestionLoaded({
29 | this.res,
30 | });
31 |
32 | @override
33 | String toString() => 'SuggestionLoaded:加载完毕';
34 | }
35 |
--------------------------------------------------------------------------------
/lib/blocs/search_result.dart:
--------------------------------------------------------------------------------
1 | ///
2 | /// Created with Android Studio.
3 | /// User: 一晟
4 | /// Date: 2019/4/28
5 | /// Time: 7:11 PM
6 | /// email: zhu.yan@alibaba-inc.com
7 | /// tartget:
8 | ///
9 | class SearchResult {
10 | String title;
11 | String source;
12 |
13 | SearchResult({this.title, this.source});
14 | }
15 |
--------------------------------------------------------------------------------
/lib/components/flutter_markdown/lib/flutter_markdown.dart:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Chromium Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style license that can be
3 | // found in the LICENSE file.
4 |
5 | /// A library to render markdown formatted text.
6 | library flutter_markdown;
7 |
8 | export 'src/builder.dart';
9 | export 'src/style_sheet.dart';
10 | export 'src/widget.dart';
11 |
--------------------------------------------------------------------------------
/lib/components/markdown.dart:
--------------------------------------------------------------------------------
1 | import '../components/flutter_markdown/lib/flutter_markdown.dart' as md;
2 | import 'package:flutter/material.dart';
3 |
4 | import 'package:flutter_go/utils/high_light_code.dart';
5 |
6 | /// 使用方法
7 | /// MarkdownBody(markdown)
8 | final hightlighter = new HighLight();
9 |
10 | class HighLight extends md.SyntaxHighlighter {
11 | @override
12 | TextSpan format(String source) {
13 | final SyntaxHighlighterStyle style =
14 | SyntaxHighlighterStyle.lightThemeStyle();
15 | return TextSpan(
16 | style: const TextStyle(fontSize: 10.0),
17 | children: [DartSyntaxHighlighter(style).format(source)]);
18 | }
19 | }
20 |
21 | class MarkdownBody extends StatelessWidget {
22 | final String data;
23 | MarkdownBody(this.data);
24 | @override
25 | Widget build(BuildContext context) {
26 | return md.MarkdownBody(data: data, syntaxHighlighter: new HighLight());
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/lib/event/event_bus.dart:
--------------------------------------------------------------------------------
1 | import 'package:event_bus/event_bus.dart';
2 |
3 | class ApplicationEvent {
4 | static EventBus event;
5 | }
6 |
--------------------------------------------------------------------------------
/lib/event/event_model.dart:
--------------------------------------------------------------------------------
1 | class CollectionEvent {
2 | final String widgetName;
3 | final String router;
4 | final bool isRemove;
5 | // token uid...
6 | CollectionEvent(this.widgetName, this.router, this.isRemove);
7 | }
8 |
9 | class UserGithubOAuthEvent {
10 | final String loginName;
11 | final String token;
12 | final bool isSuccess;
13 | UserGithubOAuthEvent(this.loginName, this.token, this.isSuccess);
14 | }
15 |
16 | class UserSettingThemeColorEvent {
17 | final int settingThemeColor;
18 | UserSettingThemeColorEvent(this.settingThemeColor);
19 | }
20 |
--------------------------------------------------------------------------------
/lib/model/base.dart:
--------------------------------------------------------------------------------
1 | import 'package:sqflite/sqflite.dart';
2 |
3 | class BaseModel {
4 | Database db;
5 | final String table = '';
6 | var query;
7 | BaseModel(this.db) {
8 | query = db.query;
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/lib/model/responseData.dart:
--------------------------------------------------------------------------------
1 | class ResponseData {
2 | int status;
3 | bool success;
4 | String message;
5 |
6 | ResponseData(this.status, this.success, this.message);
7 |
8 | ResponseData.fromJson(Map json)
9 | : status = json['status'],
10 | success = json['success'],
11 | message = json['message'];
12 |
13 | Map toJson() =>
14 | {'status': status, 'success': success, 'messsage': message};
15 |
16 | @override
17 | String toString() {
18 | return 'status: $status ,success: $success,message: ${message.toString()}';
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/model/story.dart:
--------------------------------------------------------------------------------
1 | class StoryModel {
2 | final String title;
3 | final String image;
4 | final int id;
5 | final String url;
6 |
7 | StoryModel(this.id, this.title, {this.image, this.url});
8 |
9 | StoryModel.fromJson(Map json)
10 | : this(
11 | json['id'],
12 | json['title'],
13 | image: json['image'] != null
14 | ? json['image']
15 | : (json['images'] != null ? json['images'][0] : null),
16 | url: json['url'] != null
17 | ? json['url']
18 | : (json['url'] != null ? json['url'][0] : null),
19 | );
20 |
21 | Map toJson() {
22 | return {'id': id, 'title': title, 'image': image, 'url': url};
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/model/user_info.dart:
--------------------------------------------------------------------------------
1 | class UserInformation {
2 | String username;
3 | int id;
4 | String avatarPic;
5 | String themeColor;
6 |
7 | UserInformation({
8 | this.avatarPic,
9 | this.id,
10 | this.themeColor,
11 | this.username,
12 | });
13 |
14 | factory UserInformation.fromJson(Map json) {
15 | print('fromJOSN $json ${json['id'].runtimeType}');
16 | String name = json['name'];
17 | int userId;
18 | if (json['name'] == null) {
19 | name = json['url_name'];
20 | }
21 | if (json['id'].runtimeType == int) {
22 | userId = json['id'];
23 | } else {
24 | userId = int.parse(json['id']);
25 | }
26 | return UserInformation(
27 | avatarPic: json['avatar_pic'],
28 | id: userId,
29 | username: name,
30 | themeColor: json['theme_color']);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/model/version.dart:
--------------------------------------------------------------------------------
1 | class Data {
2 | String version;
3 | String name;
4 |
5 | Data.fromJson(Map json)
6 | : version = json['version'],
7 | name = json['name'];
8 |
9 | @override
10 | String toString() {
11 | return 'name: $name ,version: $version';
12 | }
13 | }
14 |
15 | class Version {
16 | Data data;
17 | int status;
18 | bool success;
19 |
20 | Version.formJson(Map json)
21 | : status = json['status'],
22 | success = json['success'],
23 | data = Data.fromJson(json['data']);
24 |
25 | @override
26 | String toString() {
27 | return 'status: $status ,success: $success,date: ${data.toString()}';
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/page_demo_package/.demo.json:
--------------------------------------------------------------------------------
1 | [{"name":"PullToRefresh","screenShot":"","author":"chenfeihu","email":"763551832@qq.com","desc":"刷新组件","id":"5553db80_52ae_4241_9c8a_5c9e1f92b096"},{"name":"RangeSlider","screenShot":"","author":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget demo","id":"e5f958bc_52ae_4241_9c8a_5c9e1f92b096"},{"name":"demoName","screenShot":"","author":"yourName","email":"yourEmail","desc":"这是一个测试的标准demo","id":"1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"ab","email":"email","desc":"ags","id":"2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"}]
--------------------------------------------------------------------------------
/lib/page_demo_package/PullToRefresh_chenfeihu_5553db80_52ae_4241_9c8a_5c9e1f92b096/.demo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PullToRefresh",
3 | "screenShot": "",
4 | "author":"chenfeihu",
5 | "email": "763551832@qq.com",
6 | "desc": "刷新组件",
7 | "id": "5553db80_52ae_4241_9c8a_5c9e1f92b096"
8 | }
9 |
--------------------------------------------------------------------------------
/lib/page_demo_package/PullToRefresh_chenfeihu_5553db80_52ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with flutter go cli
3 | // User: chenfeihu
4 | // Time: 2019-09-24 12:11:14.085126
5 | // email: 763551832@qq.com
6 | // desc: 刷新组件
7 | //
8 |
9 | import 'src/index.dart';
10 |
11 | var demoWidgets = [new Demo()];
12 |
--------------------------------------------------------------------------------
/lib/page_demo_package/RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/.demo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RangeSlider",
3 | "screenShot": "",
4 | "author":"RangeSlider",
5 | "email": "hanxu317@qq.com",
6 | "desc": "RangeSlider widget demo",
7 | "id": "e5f958bc_52ae_4241_9c8a_5c9e1f92b096"
8 | }
9 |
--------------------------------------------------------------------------------
/lib/page_demo_package/RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with flutter go cli
3 | // User: RangeSlider
4 | // Time: 2019-09-12 15:11:05.512158
5 | // email: hanxu317@qq.com
6 | // desc: RangeSlider widget demo
7 | //
8 |
9 | import 'src/index.dart';
10 |
11 | var demoWidgets = [new Demo()];
12 |
--------------------------------------------------------------------------------
/lib/page_demo_package/RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/src/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Demo extends StatefulWidget {
4 | @override
5 | _State createState() => _State();
6 | }
7 |
8 | class _State extends State {
9 | RangeValues valuess = RangeValues(20.0, 50.0);
10 | @override
11 | Widget build(BuildContext context) {
12 | return RangeSlider(
13 | values: valuess,
14 | //实际进度的位置
15 | inactiveColor: Colors.black12,
16 | //进度中不活动部分的颜色
17 | labels: RangeLabels('12', '23'),
18 | min: 0.0,
19 | max: 100.0,
20 | divisions: 1000,
21 | activeColor: Colors.blue,
22 | //进度中活动部分的颜色
23 | onChanged: (rangeValues) {
24 | setState(() {
25 | valuess = rangeValues;
26 | });
27 | },
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/.demo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "demoName",
3 | "screenShot": "",
4 | "author":"yourName",
5 | "email": "yourEmail",
6 | "desc": "这是一个测试的标准demo",
7 | "id": "1a29aa8e_32ae_4241_9c8a_5c9e1f92b096"
8 | }
9 |
--------------------------------------------------------------------------------
/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with flutter go cli
3 | // User: yourName
4 | // Time: 2019-06-10 20:37:27.289097
5 | // email: yourEmail
6 | // desc: 这是一个测试的标准demo
7 | //
8 |
9 | import 'src/index.dart';
10 |
11 | var demoWidgets = [new Demo()];
12 |
--------------------------------------------------------------------------------
/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/src/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Demo extends StatefulWidget {
4 | @override
5 | _State createState() => _State();
6 | }
7 |
8 | class _State extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | child: RaisedButton(onPressed: () {}, child: Text('我是md中引入的demo')));
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/lib/page_demo_package/index.dart:
--------------------------------------------------------------------------------
1 | import 'PullToRefresh_chenfeihu_5553db80_52ae_4241_9c8a_5c9e1f92b096/index.dart'
2 | as StandardDemo_PullToRefresh_5553db80_52ae_4241_9c8a_5c9e1f92b096;
3 | import 'RangeSlider_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096/index.dart'
4 | as StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096;
5 | import 'demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096/index.dart'
6 | as StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096;
7 | import 'local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/index.dart'
8 | as StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096;
9 |
10 | var demoObjects = {
11 | '5553db80_52ae_4241_9c8a_5c9e1f92b096':
12 | StandardDemo_PullToRefresh_5553db80_52ae_4241_9c8a_5c9e1f92b096
13 | .demoWidgets,
14 | 'e5f958bc_52ae_4241_9c8a_5c9e1f92b096':
15 | StandardDemo_RangeSlider_e5f958bc_52ae_4241_9c8a_5c9e1f92b096.demoWidgets,
16 | '1a29aa8e_32ae_4241_9c8a_5c9e1f92b096':
17 | StandardDemo_demoName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096.demoWidgets,
18 | '2c1d57d0_42ae_4241_9c8a_5c9e1f92b096':
19 | StandardDemo_local_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096.demoWidgets
20 | };
21 |
--------------------------------------------------------------------------------
/lib/page_demo_package/info.json:
--------------------------------------------------------------------------------
1 | {
2 | "70c429df-c27d-4843-8e28-1e6885c9276b": {
3 | "name": "button-red",
4 | "screenShot": "",
5 | "author": "sanfan",
6 | "email": "sanfan.hx@alibaba-inc.com",
7 | "desc": "desc",
8 | }
9 | }
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/lib/page_demo_package/local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/.demo.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "local",
3 | "screenShot": "",
4 | "author":"ab",
5 | "email": "email",
6 | "desc": "ags",
7 | "id": "2c1d57d0_42ae_4241_9c8a_5c9e1f92b096"
8 | }
9 |
--------------------------------------------------------------------------------
/lib/page_demo_package/local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Created with flutter go cli
3 | // User: ab
4 | // Time: 2019-08-06 17:26:02.905889
5 | // email: email
6 | // desc: ags
7 | //
8 |
9 | import 'src/index.dart';
10 |
11 | var demoWidgets = [new Demo()];
12 |
--------------------------------------------------------------------------------
/lib/page_demo_package/local_ab_2c1d57d0_42ae_4241_9c8a_5c9e1f92b096/src/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Demo extends StatefulWidget {
4 | @override
5 | _State createState() => _State();
6 | }
7 |
8 | class _State extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | child: Text("this is flutter go init demo"),
13 | );
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/page_demo_package/readme.md:
--------------------------------------------------------------------------------
1 | # 目录说明
2 |
3 | 本目录文件结构与文件命名, 使用cli进行更新
4 |
5 |
6 | # demos 目录文件结构
7 |
8 | ```
9 | demos
10 | ├── ${demoName}-${author}-${32位demoID}
11 | │ ├── index.dart
12 | │ └── src
13 | │ ├── .demo.json
14 | │ └── ${demoName}.dart
15 | ├── ...${demoName}-${author}-${32位demoID}
16 | ├── index.dart
17 | ├── info.json
18 | └── readme.md
19 | ```
20 |
--------------------------------------------------------------------------------
/lib/resources/shared_preferences_keys.dart:
--------------------------------------------------------------------------------
1 | // Created with Android Studio.
2 | // User: 三帆
3 | // Date: 31/01/2019
4 | // Time: 18:13
5 | // email: sanfan.hx@alibaba-inc.com
6 | // target: xxx
7 | //
8 |
9 | //enum DateType {
10 | // Int,
11 | // Double,
12 | // Bool,
13 | // String,
14 | // Dynamic
15 | //}
16 |
17 | //class spKey {
18 | // String name;
19 | // DateType type;
20 | //
21 | // spKey({this.name, this.type});
22 | //}
23 |
24 | class SharedPreferencesKeys {
25 | /// boolean
26 | /// 用于欢迎页面. 只有第一次访问才会显示. 或者手动将这个值设为false
27 | static String showWelcome = 'loginWelcone';
28 |
29 | /// json
30 | /// 用于存放搜索页的搜索数据.
31 | /// [{
32 | /// name: 'name'
33 | ///
34 | /// }]
35 | static String searchHistory = 'searchHistory';
36 | }
37 |
--------------------------------------------------------------------------------
/lib/routers/application.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:fluro/fluro.dart';
3 | import 'package:flutter_go/utils/shared_preferences.dart';
4 |
5 | import '../model/widget.dart';
6 |
7 | enum ENV {
8 | PRODUCTION,
9 | DEV,
10 | }
11 |
12 | class Application {
13 | /// 通过Application设计环境变量
14 | static ENV env = ENV.DEV;
15 |
16 | static Router router;
17 | static TabController controller;
18 | static SpUtil sharePeference;
19 | static CategoryComponent widgetTree;
20 | static bool pageIsOpen = false;
21 |
22 | static Map github = {
23 | 'widgetsURL':
24 | 'https://github.com/alibaba/flutter-go/blob/develop/lib/widgets/',
25 | //'develop':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/develop/lib/widgets/',
26 | //'master':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/master/lib/widgets/'
27 | };
28 |
29 | /// 所有获取配置的唯一入口
30 | Map get config {
31 | if (Application.env == ENV.PRODUCTION) {
32 | return {};
33 | }
34 | if (Application.env == ENV.DEV) {
35 | return {};
36 | }
37 | return {};
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/standard_pages/.pages.json:
--------------------------------------------------------------------------------
1 | [{"name":"PullToRefresh","screenShot":"","author":"chenfeihu","title":"PullToRefresh","email":"763551832@qq.com","desc":"Refresh conponent","id":"cd9b8b80_52ae_4241_9c8a_5c9e1f92b096"},{"name":"local","screenShot":"","author":"hnaxu","title":"本地","email":"hanxu@qq.com","desc":"desc","id":"5d7178d0_42ae_4241_9c8a_5c9e1f92b096"},{"name":"test","screenShot":"","author":"abc","title":"ya","email":"adsf.com","desc":"desc","id":"84f38e00_42ae_4241_9c8a_5c9e1f92b096"},{"name":"standard","screenShot":"","author":"sanfan","title":"介绍页","email":"hanxu317@qq.com","desc":"desc","id":"ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"},{"name":"standard_for_slider","screenShot":"","author":"sanfan","title":"slider组件","email":"hanxu@qq.com","desc":"slider, new Slider","id":"8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"},{"name":"RangeSlider","screenShot":"","author":"hanxu","title":"RangeSlider","email":"hanxu317@qq.com","desc":"RangeSlider widget","id":"cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"}]
--------------------------------------------------------------------------------
/lib/standard_pages/PullToRefresh_chenfeihu_cd9b8b80_52ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PullToRefresh",
3 | "screenShot": "",
4 | "author":"chenfeihu",
5 | "title":"PullToRefresh",
6 | "email": "763551832@qq.com",
7 | "desc": "Refresh conponent",
8 | "id": "cd9b8b80_52ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RangeSlider",
3 | "screenShot": "",
4 | "author":"hanxu",
5 | "title":"RangeSlider",
6 | "email": "hanxu317@qq.com",
7 | "desc": "RangeSlider widget",
8 | "id": "cbffbf7c_52ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | String getMd() {
2 | return """
3 | # RangeSlider
4 |
5 | > 用来选择范围性的数据
6 |
7 | slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
8 |
9 |
10 | ### **基本用法**
11 |
12 | 关于slider有以下的术语:
13 |
14 | * **thumb** 滑块 用户可以水平拖拽移动的区域
15 |
16 | * **track** 滑轨 thumb 可以滑动的线条区域
17 |
18 | * **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
19 |
20 | * **active** 选中区
21 |
22 | * **inactive** 非选中区
23 |
24 | 如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空(例如如果min等于max),则将禁用滑块。
25 |
26 | 滑块小部件本身不保持任何状态State。相反,当滑块状态发生变化时,窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
27 |
28 | 默认情况下,滑块将尽可能宽,垂直居中。当给定无限制约束时,它将尝试使轨道宽144像素(每边有边距)并垂直收缩。
29 |
30 | ### 实例展示
31 |
32 | [demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]""";
33 | }
34 |
--------------------------------------------------------------------------------
/lib/standard_pages/RangeSlider_hanxu_cbffbf7c_52ae_4241_9c8a_5c9e1f92b096/index.md:
--------------------------------------------------------------------------------
1 | # RangeSlider
2 |
3 | > 用来选择范围性的数据
4 |
5 | slider 用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
6 |
7 |
8 | ### **基本用法**
9 |
10 | 关于slider有以下的术语:
11 |
12 | * **thumb** 滑块 用户可以水平拖拽移动的区域
13 |
14 | * **track** 滑轨 thumb 可以滑动的线条区域
15 |
16 | * **value indicator** 值指示器 当用户拖拽thumb的时候. 显示用户当前所选的属性值
17 |
18 | * **active** 选中区
19 |
20 | * **inactive** 非选中区
21 |
22 | 如果**onChanged**属性为空或者**min** .. **max**给出的范围 为空(例如如果min等于max),则将禁用滑块。
23 |
24 | 滑块小部件本身不保持任何状态State。相反,当滑块状态发生变化时,窗口小部件会调用 **onChanged** 回调。大多数使用滑块的小部件将侦听 **onChanged** 回调并使用新值重建滑块以更新滑块的视觉外观。要知道值何时开始更改,或何时更改,请设置可选回调**onChangeStart**或**onChangeEnd**。
25 |
26 | 默认情况下,滑块将尽可能宽,垂直居中。当给定无限制约束时,它将尝试使轨道宽144像素(每边有边距)并垂直收缩。
27 |
28 | ### 实例展示
29 |
30 | [demo:e5f958bc_52ae_4241_9c8a_5c9e1f92b096]
--------------------------------------------------------------------------------
/lib/standard_pages/local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "local",
3 | "screenShot": "",
4 | "author":"hnaxu",
5 | "title":"本地",
6 | "email": "hanxu@qq.com",
7 | "desc": "desc",
8 | "id": "5d7178d0_42ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | String getMd() {
2 | return """
3 | # 标准的详情页
4 |
5 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
6 |
7 | 您可以通过goCli创建详情页所需要的demo
8 |
9 | ```
10 | goCLi createDemo
11 | ```
12 |
13 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
14 |
15 | [✓] 请输入新增加的demo名称? demoName
16 |
17 | [✓] 请输入您的姓名(使用英文) yourName
18 |
19 | [✓] 请输入您的github的email地址 yourEmail
20 |
21 | [✓] 请输入您demo的描述 这是一个测试的标准demo
22 |
23 |
24 | 在完成以上操作后, 可以得到这样的输出:
25 |
26 |
27 | ```
28 | ------------------
29 | 您新增的组件信息如下
30 | ==================
31 | {
32 | name : demoName
33 | author : yourName
34 | email : yourEmail
35 | desc : 这是一个测试的标准demo
36 | }
37 | ==================
38 | [✓] Is this the config you want ? (Y/n) y
39 | {
40 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
41 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
42 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
43 | }
44 |
45 | ```
46 | 您可以在任意详情页中, 通过以下方式调用
47 |
48 | ```
49 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
50 | ```""";
51 | }
52 |
--------------------------------------------------------------------------------
/lib/standard_pages/local_hnaxu_5d7178d0_42ae_4241_9c8a_5c9e1f92b096/index.md:
--------------------------------------------------------------------------------
1 | # 标准的详情页 this is test
2 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
3 |
4 | 您可以通过goCli创建详情页所需要的demo
5 |
6 | ```
7 | goCLi createDemo
8 | ```
9 |
10 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
11 |
12 | [✓] 请输入新增加的demo名称? demoName
13 |
14 | [✓] 请输入您的姓名(使用英文) yourName
15 |
16 | [✓] 请输入您的github的email地址 yourEmail
17 |
18 | [✓] 请输入您demo的描述 这是一个测试的标准demo
19 |
20 |
21 | 在完成以上操作后, 可以得到这样的输出:
22 |
23 |
24 | ```
25 | ------------------
26 | 您新增的组件信息如下
27 | ==================
28 | {
29 | name : demoName
30 | author : yourName
31 | email : yourEmail
32 | desc : 这是一个测试的标准demo
33 | }
34 | ==================
35 | [✓] Is this the config you want ? (Y/n) y
36 | {
37 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
38 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
39 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
40 | }
41 |
42 | ```
43 | 您可以在任意详情页中, 通过以下方式调用
44 |
45 | ```
46 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
47 | ```
48 |
--------------------------------------------------------------------------------
/lib/standard_pages/standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "standard_for_slider",
3 | "screenShot": "",
4 | "author":"sanfan",
5 | "title":"slider组件",
6 | "email": "hanxu@qq.com",
7 | "desc": "slider, new Slider",
8 | "id": "8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | String getMd() {
2 | return """
3 | # Slider Page
4 |
5 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
6 |
7 | 您可以通过goCli创建详情页所需要的demo
8 |
9 |
10 |
11 |
12 | ```
13 | goCLi createDemo
14 | ```
15 |
16 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
17 |
18 | [✓] 请输入新增加的demo名称? demoName
19 |
20 | [✓] 请输入您的姓名(使用英文) yourName
21 |
22 | [✓] 请输入您的github的email地址 yourEmail
23 |
24 | [✓] 请输入您demo的描述 这是一个测试的标准demo
25 |
26 |
27 | 在完成以上操作后, 可以得到这样的输出:
28 |
29 |
30 | ```
31 | ------------------
32 | 您新增的组件信息如下
33 | ==================
34 | {
35 | name : demoName
36 | author : yourName
37 | email : yourEmail
38 | desc : 这是一个测试的标准demo
39 | }
40 | ==================
41 | [✓] Is this the config you want ? (Y/n) y
42 | {
43 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
44 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
45 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
46 | }
47 |
48 | ```
49 | 您可以在任意详情页中, 通过以下方式调用
50 |
51 | ```
52 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
53 | ```
54 |
55 | 调用效果:
56 |
57 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]""";
58 | }
59 |
--------------------------------------------------------------------------------
/lib/standard_pages/standard_for_slider_sanfan_8ab2b5c2_42ae_4241_9c8a_5c9e1f92b096/index.md:
--------------------------------------------------------------------------------
1 | # Slider Page
2 |
3 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
4 |
5 | 您可以通过goCli创建详情页所需要的demo
6 |
7 |
8 |
9 |
10 | ```
11 | goCLi createDemo
12 | ```
13 |
14 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
15 |
16 | [✓] 请输入新增加的demo名称? demoName
17 |
18 | [✓] 请输入您的姓名(使用英文) yourName
19 |
20 | [✓] 请输入您的github的email地址 yourEmail
21 |
22 | [✓] 请输入您demo的描述 这是一个测试的标准demo
23 |
24 |
25 | 在完成以上操作后, 可以得到这样的输出:
26 |
27 |
28 | ```
29 | ------------------
30 | 您新增的组件信息如下
31 | ==================
32 | {
33 | name : demoName
34 | author : yourName
35 | email : yourEmail
36 | desc : 这是一个测试的标准demo
37 | }
38 | ==================
39 | [✓] Is this the config you want ? (Y/n) y
40 | {
41 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
42 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
43 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
44 | }
45 |
46 | ```
47 | 您可以在任意详情页中, 通过以下方式调用
48 |
49 | ```
50 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
51 | ```
52 |
53 | 调用效果:
54 |
55 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
--------------------------------------------------------------------------------
/lib/standard_pages/standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "standard",
3 | "screenShot": "",
4 | "author":"sanfan",
5 | "title":"介绍页",
6 | "email": "hanxu317@qq.com",
7 | "desc": "desc",
8 | "id": "ee4feb8e_32ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | String getMd() {
2 | return """
3 | # 标准的详情页
4 |
5 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
6 |
7 | 您可以通过goCli创建详情页所需要的demo
8 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
9 |
10 |
11 | ```
12 | goCLi createDemo
13 | ```
14 |
15 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
16 |
17 | [✓] 请输入新增加的demo名称? demoName
18 |
19 | [✓] 请输入您的姓名(使用英文) yourName
20 |
21 | [✓] 请输入您的github的email地址 yourEmail
22 |
23 | [✓] 请输入您demo的描述 这是一个测试的标准demo
24 |
25 |
26 | 在完成以上操作后, 可以得到这样的输出:
27 |
28 |
29 | ```
30 | ------------------
31 | 您新增的组件信息如下
32 | ==================
33 | {
34 | name : demoName
35 | author : yourName
36 | email : yourEmail
37 | desc : 这是一个测试的标准demo
38 | }
39 | ==================
40 | [✓] Is this the config you want ? (Y/n) y
41 | {
42 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
43 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
44 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
45 | }
46 |
47 | ```
48 | 您可以在任意详情页中, 通过以下方式调用
49 |
50 | ```
51 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
52 | ```""";
53 | }
54 |
--------------------------------------------------------------------------------
/lib/standard_pages/standard_sanfan_ee4feb8e_32ae_4241_9c8a_5c9e1f92b096/index.md:
--------------------------------------------------------------------------------
1 | # 标准的详情页 this is title
2 |
3 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
4 |
5 | 您可以通过goCli创建详情页所需要的demo
6 | [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
7 |
8 |
9 | ```
10 | goCLi createDemo
11 | ```
12 |
13 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
14 |
15 | [✓] 请输入新增加的demo名称? demoName
16 |
17 | [✓] 请输入您的姓名(使用英文) yourName
18 |
19 | [✓] 请输入您的github的email地址 yourEmail
20 |
21 | [✓] 请输入您demo的描述 这是一个测试的标准demo
22 |
23 |
24 | 在完成以上操作后, 可以得到这样的输出:
25 |
26 |
27 | ```
28 | ------------------
29 | 您新增的组件信息如下
30 | ==================
31 | {
32 | name : demoName
33 | author : yourName
34 | email : yourEmail
35 | desc : 这是一个测试的标准demo
36 | }
37 | ==================
38 | [✓] Is this the config you want ? (Y/n) y
39 | {
40 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
41 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
42 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
43 | }
44 |
45 | ```
46 | 您可以在任意详情页中, 通过以下方式调用
47 |
48 | ```
49 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
50 | ```
51 |
--------------------------------------------------------------------------------
/lib/standard_pages/test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096/.page.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test",
3 | "screenShot": "",
4 | "author":"abc",
5 | "title":"ya",
6 | "email": "adsf.com",
7 | "desc": "desc",
8 | "id": "84f38e00_42ae_4241_9c8a_5c9e1f92b096"
9 | }
10 |
--------------------------------------------------------------------------------
/lib/standard_pages/test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096/index.dart:
--------------------------------------------------------------------------------
1 | String getMd() {
2 | return """
3 | # 标准的详情页
4 |
5 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
6 |
7 | 您可以通过goCli创建详情页所需要的demo
8 |
9 | ```
10 | goCLi createDemo
11 | ```
12 |
13 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
14 |
15 | [✓] 请输入新增加的demo名称? demoName
16 |
17 | [✓] 请输入您的姓名(使用英文) yourName
18 |
19 | [✓] 请输入您的github的email地址 yourEmail
20 |
21 | [✓] 请输入您demo的描述 这是一个测试的标准demo
22 |
23 |
24 | 在完成以上操作后, 可以得到这样的输出:
25 |
26 |
27 | ```
28 | ------------------
29 | 您新增的组件信息如下
30 | ==================
31 | {
32 | name : demoName
33 | author : yourName
34 | email : yourEmail
35 | desc : 这是一个测试的标准demo
36 | }
37 | ==================
38 | [✓] Is this the config you want ? (Y/n) y
39 | {
40 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
41 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
42 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
43 | }
44 |
45 | ```
46 | 您可以在任意详情页中, 通过以下方式调用
47 |
48 | ```
49 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
50 | ```""";
51 | }
52 |
--------------------------------------------------------------------------------
/lib/standard_pages/test_abc_84f38e00_42ae_4241_9c8a_5c9e1f92b096/index.md:
--------------------------------------------------------------------------------
1 | # 标准的详情页
2 |
3 | 您可以在这个界面中, 编写大多数的markdown文案, 他会在 **goCli watch** 下同步被编译成 **dart** 文件
4 |
5 | 您可以通过goCli创建详情页所需要的demo
6 |
7 | ```
8 | goCLi createDemo
9 | ```
10 |
11 | 在flutter go 根文件下通过命令行输入以上命令可以进行以下操作
12 |
13 | [✓] 请输入新增加的demo名称? demoName
14 |
15 | [✓] 请输入您的姓名(使用英文) yourName
16 |
17 | [✓] 请输入您的github的email地址 yourEmail
18 |
19 | [✓] 请输入您demo的描述 这是一个测试的标准demo
20 |
21 |
22 | 在完成以上操作后, 可以得到这样的输出:
23 |
24 |
25 | ```
26 | ------------------
27 | 您新增的组件信息如下
28 | ==================
29 | {
30 | name : demoName
31 | author : yourName
32 | email : yourEmail
33 | desc : 这是一个测试的标准demo
34 | }
35 | ==================
36 | [✓] Is this the config you want ? (Y/n) y
37 | {
38 | 新建的demo文件位于 : /flutter go/lib/page_demo_package/demoName_yourName_1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
39 | demoId为 : 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096
40 | markdown中调用方式 : [demo:1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
41 | }
42 |
43 | ```
44 | 您可以在任意详情页中, 通过以下方式调用
45 |
46 | ```
47 | [demo: 1a29aa8e_32ae_4241_9c8a_5c9e1f92b096]
48 | ```
--------------------------------------------------------------------------------
/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/example_code_parser.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2019-01-14 11:42:36
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2019-01-14 16:53:11
5 |
6 | import 'dart:async';
7 |
8 | import 'package:flutter/services.dart';
9 | import 'package:url_launcher/url_launcher.dart';
10 | import 'package:flutter/material.dart';
11 |
12 | import 'package:flutter_go/routers/application.dart';
13 |
14 | Map _exampleCode;
15 | String _code;
16 |
17 | void _launchURL(String url) async {
18 | if (await canLaunch(url)) {
19 | await launch(url);
20 | } else {
21 | throw 'Could not launch $url';
22 | }
23 | }
24 |
25 | Future getExampleCode(
26 | context, String filePath, AssetBundle bundle) async {
27 | if (_exampleCode == null) await _parseExampleCode(context, filePath, bundle);
28 | return _code;
29 | }
30 |
31 | Future _parseExampleCode(
32 | context, String filePath, AssetBundle bundle) async {
33 | String code;
34 | try {
35 | code = await bundle.loadString('lib/widgets/$filePath');
36 | } catch (err) {
37 | Navigator.of(context).pop();
38 | _launchURL(Application.github['widgetsURL'] + filePath);
39 | }
40 | _code = code;
41 | }
42 |
--------------------------------------------------------------------------------
/lib/utils/style.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | //颜色配置
4 | class AppColor {
5 | static const int white = 0xFFFFFFFF;
6 | static const int mainTextColor = 0xFF121917;
7 | static const int subTextColor = 0xff959595;
8 | }
9 |
10 | //文本设置
11 | class AppText {
12 | static const middleSize = 16.0;
13 |
14 | static const middleText = TextStyle(
15 | color: Color(AppColor.mainTextColor),
16 | fontSize: middleSize,
17 | );
18 |
19 | static const middleSubText = TextStyle(
20 | color: Color(AppColor.subTextColor),
21 | fontSize: middleSize,
22 | );
23 | }
24 |
25 | class WidgetDemoColor {
26 | static const int fontColor = 0xFF607173;
27 | static const int iconColor = 0xFF607173;
28 | static const int borderColor = 0xFFEFEFEF;
29 | }
30 |
--------------------------------------------------------------------------------
/lib/views/fourth_page/page_reveal.dart:
--------------------------------------------------------------------------------
1 | import 'dart:math';
2 |
3 | import 'package:flutter/material.dart';
4 |
5 | class PageReveal extends StatelessWidget {
6 | final double revealPercent;
7 | final Widget child;
8 |
9 | PageReveal({this.revealPercent, this.child});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return ClipOval(
14 | clipper: new CircleRevealClipper(revealPercent),
15 | child: child,
16 | );
17 | }
18 | }
19 |
20 | class CircleRevealClipper extends CustomClipper {
21 | final double revealPercent;
22 |
23 | CircleRevealClipper(this.revealPercent);
24 |
25 | @override
26 | Rect getClip(Size size) {
27 | final epicenter = new Offset(size.width / 2, size.height * 0.9);
28 |
29 | double theta = atan(epicenter.dy / epicenter.dx);
30 | final distanceToCorner = epicenter.dy / sin(theta);
31 |
32 | final radius = distanceToCorner * revealPercent;
33 | final diameter = 2 * radius;
34 |
35 | return new Rect.fromLTWH(
36 | epicenter.dx - radius, epicenter.dy - radius, diameter, diameter);
37 | }
38 |
39 | @override
40 | bool shouldReclip(CustomClipper oldClipper) {
41 | return true;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/views/user_page/user_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_go/model/user_info.dart';
3 | import 'package:flutter_go/views/first_page/drawer_page.dart';
4 |
5 | class UserPage extends StatefulWidget {
6 | final UserInformation userInfo;
7 |
8 | UserPage({Key key, this.userInfo}) : super(key: key);
9 |
10 | @override
11 | _UserPageState createState() => _UserPageState();
12 | }
13 |
14 | class _UserPageState extends State {
15 | @override
16 | Widget build(BuildContext context) {
17 | print(widget.userInfo);
18 | return Scaffold(
19 | body: Container(
20 | child: DrawerPage(
21 | userInfo: widget.userInfo,
22 | ),
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/views/welcome_page/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 14/01/2019
4 | /// Time: 23:00
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter/widgets.dart';
10 |
11 | import 'package:flutter_go/views/welcome_page/fourth_page.dart';
12 |
13 | class WelcomePage extends StatefulWidget {
14 | WelcomePage({Key key}) : super(key: key);
15 |
16 | @override
17 | _WelcomePageState createState() {
18 | return new _WelcomePageState();
19 | }
20 | }
21 |
22 | class _WelcomePageState extends State {
23 | @override
24 | Widget build(BuildContext context) {
25 | return new Container(color: Colors.white, child: FourthPage());
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/widgets/404.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class WidgetNotFound extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Scaffold(
7 | appBar: AppBar(
8 | title: Text("widget not found"),
9 | ),
10 | body: Container(child: Text("widget not found")));
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/lib/widgets/components/Bar/SnackBarAction/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: sanfan.hx
3 | /// Date: 2019/1/6
4 | /// Time: 下午17:08
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: SnackBarAction 的示例
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import './demo.dart' as SnackBarDemo;
12 |
13 | const String _Text0 = """
14 | ### **简介**
15 | > SnackBarAction “屏幕底部消息右侧可操作的行为”
16 |
17 | - 带有可选操作的轻量级消息,短暂显示在屏幕底部, 并提供按钮交互。
18 |
19 | ### **基本用法**
20 |
21 | > 为SnackBar加入action[SnackBarAction]显示按区, 默认下是隐藏的
22 |
23 | """;
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/components/Bar/SnackBarAction';
27 |
28 | @override
29 | _DemoState createState() => _DemoState();
30 | }
31 |
32 | class _DemoState extends State {
33 | @override
34 | Widget build(BuildContext context) {
35 | return WidgetDemo(
36 | title: 'SnackBarAction',
37 | codeUrl: 'components/Bar/SnackBarAction/demo.dart',
38 | contentList: [
39 | _Text0,
40 | SnackBarDemo.SnackBarActionDemo(),
41 | ],
42 | docUrl:
43 | 'https://docs.flutter.io/flutter/material/SnackBarAction-class.html',
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/widgets/components/Card/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2018/12/27
4 | /// Time: 下午2:50
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: Card 的示例
7 |
8 | import "package:flutter/material.dart";
9 |
10 | import '../../../model/widget.dart';
11 | import 'Card/index.dart' as Card;
12 |
13 | List widgetPoints = [
14 | WidgetPoint(
15 | name: 'Card',
16 | routerName: Card.Demo.routeName,
17 | buildRouter: (BuildContext context) => Card.Demo(),
18 | )
19 | ];
20 |
--------------------------------------------------------------------------------
/lib/widgets/components/Chip/Chip/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-18 11:40:57
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-18 15:13:23
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > chip是表示属性,文本,实体或动作的元素
14 | - 需要在Material wedige 中。
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - 需要Material widget.
19 | - 这个label和clipBehavior参数不能为空
20 | ''';
21 |
22 | class Demo extends StatefulWidget {
23 | static const String routeName = '/components/Chip/Chip';
24 | _DemoState createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | contentList: [
32 | content0,
33 | content1,
34 | ChipDemo(),
35 | ],
36 | codeUrl: 'components/Chip/Chip/demo.dart',
37 | docUrl: 'https://docs.flutter.io/flutter/material/Chip-class.html',
38 | title: 'Chip');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Chip/ChipTheme/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-18 15:14:03
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-18 15:14:03
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 基于 RawChip-based widgets,如chip,inputChip,ChoiceChip,FilterChip等
14 | - chipTheme描述了应用它的chip的颜色,形状和文本样式
15 |
16 | ''';
17 | const String content1 = '''
18 | ### **基本用法**
19 | - 可通过chipTheme.of获取当前主题的ChipThemeData对象
20 | - 当widget使用ChipTheme.of时,如果主题稍后更改,则会自动重建。
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/components/Chip/ChipTheme';
25 | _DemoState createState() => _DemoState();
26 | }
27 |
28 | class _DemoState extends State {
29 | @override
30 | Widget build(BuildContext context) {
31 | return WidgetDemo(
32 | contentList: [
33 | content0,
34 | content1,
35 | ChipThemeDemo(),
36 | ],
37 | codeUrl: 'components/Chip/ChipTheme/demo.dart',
38 | docUrl: 'https://docs.flutter.io/flutter/material/ChipTheme-class.html',
39 | title: 'ChipTheme');
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/widgets/components/Chip/ChipThemeData/demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-18 15:14:10
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-18 19:39:41
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class ChipThemeDemo extends StatefulWidget {
9 | _ChipThemeDemoState createState() => _ChipThemeDemoState();
10 | }
11 |
12 | class _ChipThemeDemoState extends State {
13 | Color _color = Colors.red;
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return ChipTheme(
18 | data: ChipThemeData.fromDefaults(
19 | // brightness: Brightness.dark,
20 | labelStyle: TextStyle(fontSize: 15.0),
21 | primaryColor: Colors.red,
22 | secondaryColor: Colors.red.shade800),
23 | child: ChoiceChip(
24 | padding:
25 | EdgeInsets.only(left: 100.0, right: 100.0, top: 10.0, bottom: 10.0),
26 | label: Text('down'),
27 | onSelected: (bool value) {
28 | setState(() {
29 | _color = value ? Colors.black : Colors.red;
30 | });
31 | },
32 | selected: _color == Colors.black,
33 | ),
34 | );
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/widgets/components/Chip/ChoiceChip/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-19 15:13:29
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-21 10:22:57
5 |
6 | import 'package:flutter/material.dart';
7 | import 'package:flutter_go/components/widget_demo.dart';
8 | import 'demo.dart';
9 |
10 | const String content0 = '''
11 | ### **简介**
12 | > 允许从一组选项中进行单一的选择
13 | - ChoiceChip包含相关的描述性文本或者类别
14 |
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - onSelected : 选择或者取消选择状态间切换调用
19 | ''';
20 |
21 | class Demo extends StatefulWidget {
22 | static const String routeName = '/components/Chip/ChoiceChip';
23 | _DemoState createState() => _DemoState();
24 | }
25 |
26 | class _DemoState extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | contentList: [
31 | content0,
32 | content1,
33 | ChoiceChipDemo(),
34 | ],
35 | codeUrl: 'components/Chip/ChoiceChip/demo.dart',
36 | docUrl:
37 | 'https://docs.flutter.io/flutter/material/ChoiceChip-class.html',
38 | title: 'ChoiceChip');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Chip/FilterChip/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-20 10:19:55
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-21 10:25:22
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 通过使用标签或者描述性词语来过滤内容
14 | - FilterChip 是 checkbox 或 switch widget 的替换品。
15 |
16 | ''';
17 | const String content1 = '''
18 | ### **基本用法**
19 | ''';
20 |
21 | class Demo extends StatefulWidget {
22 | static const String routeName = '/components/Chip/FilterChip';
23 | _DemoState createState() => _DemoState();
24 | }
25 |
26 | class _DemoState extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | contentList: [
31 | content0,
32 | content1,
33 | FilterChipDemo(),
34 | ],
35 | codeUrl: 'components/Chip/FilterChip/demo.dart',
36 | docUrl:
37 | 'https://docs.flutter.io/flutter/material/FilterChip-class.html',
38 | title: 'FilterChip');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Dialog/AboutDialog/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 07/01/2019
4 | /// Time: 10:26
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const String _Text0 = """
14 | ### **简介**
15 | > AboutDialog 通常用于传递企业或者app的官方信息
16 | - 这个对话框包含应用程序的图标,名称,版本号,版权和应用程序使用到的软件许可证的按钮
17 |
18 |
19 | ### **基本用法**
20 | > 要显示的AboutDialog,使用showAboutDialog。
21 | - 如果应用程序具有Drawer,则AboutListTile可以使显示AboutDialog的过程更简单。
22 | - AboutDialog通过showAboutDialog 显示按钮调用 showLicensePage。
23 |
24 | """;
25 |
26 | class Demo extends StatefulWidget {
27 | static const String routeName = '/components/Dialog/AboutDialog';
28 |
29 | @override
30 | _DemoState createState() => _DemoState();
31 | }
32 |
33 | class _DemoState extends State {
34 | @override
35 | Widget build(BuildContext context) {
36 | return WidgetDemo(
37 | title: 'AboutDialog',
38 | codeUrl: 'components/Dialog/AboutDialog/demo.dart',
39 | contentList: [_Text0, AboutDialogDemo()],
40 | docUrl: 'https://docs.flutter.io/flutter/material/AboutDialog-class.html',
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/widgets/components/Dialog/SimpleDialog/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 07/01/2019
4 | /// Time: 10:26
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const String _Text0 = """
14 | ### **简介**
15 | > SimpleDialog 是一个用于向用户传递确定信息并提供选项的弹出层
16 | - SimpleDialog 可为用户提供多个选项选择。有一个可选的标题,显示在选项上方
17 |
18 |
19 |
20 | ### **基本用法**
21 |
22 | > 通常作为子窗口小部件传递给showDialog,后者显示对话框。
23 | - 选择通常使用SimpleDialogOption表示
24 | - 对于通知用户情况的对话框,请考虑使用 AlertDialog。
25 |
26 | """;
27 |
28 | class Demo extends StatefulWidget {
29 | static const String routeName = '/components/Dialog/SimpleDialog';
30 |
31 | @override
32 | _DemoState createState() => _DemoState();
33 | }
34 |
35 | class _DemoState extends State {
36 | @override
37 | Widget build(BuildContext context) {
38 | return WidgetDemo(
39 | title: 'SimpleDialog',
40 | codeUrl: 'components/Dialog/SimpleDialog/demo.dart',
41 | contentList: [_Text0, SimpleDialogDemo()],
42 | docUrl:
43 | 'https://docs.flutter.io/flutter/material/SimpleDialog-class.html',
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/widgets/components/Dialog/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../model/widget.dart';
4 | import 'AlertDialog/index.dart' as AlertDialog;
5 | import 'Dialog/index.dart' as Dialog;
6 | import 'SimpleDialog/index.dart' as SimpleDialog;
7 | import 'AboutDialog/index.dart' as AboutDialog;
8 |
9 | List widgetPoints = [
10 | WidgetPoint(
11 | name: 'AlertDialog',
12 | routerName: AlertDialog.Demo.routeName,
13 | buildRouter: (BuildContext context) => AlertDialog.Demo(),
14 | ),
15 | WidgetPoint(
16 | name: 'Dialog',
17 | routerName: Dialog.Demo.routeName,
18 | buildRouter: (BuildContext context) => Dialog.Demo(),
19 | ),
20 | WidgetPoint(
21 | name: 'SimpleDialog',
22 | routerName: SimpleDialog.Demo.routeName,
23 | buildRouter: (BuildContext context) => SimpleDialog.Demo(),
24 | ),
25 | WidgetPoint(
26 | name: 'AboutDialog',
27 | routerName: AboutDialog.Demo.routeName,
28 | buildRouter: (BuildContext context) => AboutDialog.Demo(),
29 | ),
30 | ];
31 |
--------------------------------------------------------------------------------
/lib/widgets/components/Grid/GridPaper/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 07/01/2019
4 | /// Time: 10:26
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const String _Text0 = """
14 | ### **简介**
15 | > GridViewPaper是GridView中的item的一种展现形式, 会在上层浮现一层网络.
16 |
17 | """;
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName = '/components/Grid/GridPaper';
21 |
22 | @override
23 | _DemoState createState() => _DemoState();
24 | }
25 |
26 | class _DemoState extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | title: 'GridPaper',
31 | codeUrl: 'components/Grid/GridPaper/demo.dart',
32 | contentList: [
33 | _Text0,
34 | GridPaperDemo(),
35 | SizedBox(
36 | height: 100.0,
37 | )
38 | ],
39 | docUrl: 'https://docs.flutter.io/flutter/material/GridPaper-class.html',
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/components/Grid/GridTile/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 07/01/2019
4 | /// Time: 10:26
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const String _Text0 = """
14 | ### **简介**
15 | > GridTile 是GridList中的一种瓷片组件;包含header, body, footer三部份;
16 |
17 |
18 | ### **基本用法**
19 |
20 | > 一个grid列表包含多个Item, 每个Item通常包含一些视觉丰富的内容(例如,图像), 我们可以用GridTileBar去定义他的页眉与页脚。
21 |
22 | 如下实例中, 第一个是item便是GridTile组件构成. 包含header, body, footer;
23 | """;
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/components/Grid/GridTile';
27 |
28 | @override
29 | _DemoState createState() => _DemoState();
30 | }
31 |
32 | class _DemoState extends State {
33 | @override
34 | Widget build(BuildContext context) {
35 | return WidgetDemo(
36 | title: 'GridTile',
37 | codeUrl: 'components/Grid/GridTile/demo.dart',
38 | contentList: [
39 | _Text0,
40 | GridTileDemo(),
41 | ],
42 | docUrl: 'https://docs.flutter.io/flutter/material/Dialog-class.html',
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/widgets/components/List/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2018/12/27
4 | /// Time: 下午2:50
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: List 的示例
7 |
8 | import "package:flutter/material.dart";
9 |
10 | import '../../../model/widget.dart';
11 | import 'ListBody/index.dart' as ListBody;
12 | import 'ListView/index.dart' as ListView;
13 | import 'AnimatedList/index.dart' as AnimatedList;
14 |
15 | List widgetPoints = [
16 | WidgetPoint(
17 | name: 'ListBody',
18 | routerName: ListBody.Demo.routeName,
19 | buildRouter: (BuildContext context) => ListBody.Demo(),
20 | ),
21 | WidgetPoint(
22 | name: 'ListView',
23 | routerName: ListView.Demo.routeName,
24 | buildRouter: (BuildContext context) => ListView.Demo(),
25 | ),
26 | WidgetPoint(
27 | name: 'AnimatedList',
28 | routerName: AnimatedList.Demo.routeName,
29 | buildRouter: (BuildContext context) => AnimatedList.Demo(),
30 | )
31 | ];
32 |
--------------------------------------------------------------------------------
/lib/widgets/components/Menu/PopupMenuEntry/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-27 14:51:58
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-27 16:06:20
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import '../PopupMenuDivider/demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > Material 风格中 弹出菜单的一个基类
14 | - 如果需要创建一个显示弹出菜单的按钮,请考虑使用 PopupMenuButton.
15 | ''';
16 |
17 | const String content1 = '''
18 | ### **基本用法**
19 | - PopupMenuDivider 是一条水平分割线,注意数组要使用父类 PopupMenuEntry,配合其他 item 样式共同使用
20 | ''';
21 |
22 | class Demo extends StatefulWidget {
23 | static const String routeName = '/components/Menu/PopupMenuEntry';
24 | _DemoState createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | contentList: [content0, content1, PopupMenuDividerDemo()],
32 | docUrl:
33 | 'https://docs.flutter.io/flutter/material/PopupMenuEntry-class.html',
34 | codeUrl: 'components/Menu/PopupMenuDivider/demo.dart',
35 | title: 'PopupMenuEntry',
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/components/Menu/PopupMenuItem/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-29 15:04:51
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-29 15:07:16
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import '../PopupMenuDivider/demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > Material 中窗口弹出的菜单
14 | - 如果需要创建一个显示弹出菜单的按钮,请考虑使用 PopupMenuButton.
15 | ''';
16 |
17 | const String content1 = '''
18 | ### **基本用法**
19 | - PopupMenuDivider 是一条水平分割线,注意数组要使用父类 PopupMenuEntry,配合其他 item 样式共同使用
20 | ''';
21 |
22 | class Demo extends StatefulWidget {
23 | static const String routeName = '/components/Menu/PopupMenuItem';
24 | _DemoState createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | contentList: [content0, content1, PopupMenuDividerDemo()],
32 | docUrl:
33 | "https://docs.flutter.io/flutter/material/PopupMenuItem-class.html",
34 | codeUrl: 'components/Menu/PopupMenuDivider/demo.dart',
35 | title: 'PopupMenuItem',
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/components/Menu/PopupMenuItemState/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-29 15:04:51
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-29 16:22:06
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import '../PopupMenuDivider/demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 这个state 是 PopupMenuItem 子类
14 | - 默认情况下,它实现了Material Design弹出菜单项的基本样式和布局,然而这个buidlChild方法可以重写,以调整放置在菜单中的位置。默认它返回PopupMenuItem.child。
15 |
16 | ''';
17 |
18 | const String content1 = '''
19 | ### **基本用法**
20 | - PopupMenuDivider 是一条水平分割线,注意数组要使用父类 PopupMenuEntry,配合其他 item 样式共同使用
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/components/Menu/PopupMenuItem';
25 | _DemoState createState() => _DemoState();
26 | }
27 |
28 | class _DemoState extends State {
29 | @override
30 | Widget build(BuildContext context) {
31 | return WidgetDemo(
32 | contentList: [content0, content1, PopupMenuDividerDemo()],
33 | docUrl:
34 | "https://docs.flutter.io/flutter/material/PopupMenuItem-class.html",
35 | codeUrl: 'components/Menu/PopupMenuEntry/demo.dart',
36 | title: 'PopupMenuItem',
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/components/Navigation/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2018/12/27
4 | /// Time: 下午2:50
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: Navigation 的示例
7 |
8 | import "package:flutter/material.dart";
9 |
10 | import '../../../model/widget.dart';
11 | import 'BottomNavigationBar/index.dart' as BottomNavigationBar;
12 | import 'BottomNavigationBarItem/index.dart' as BottomNavigationBarItem;
13 |
14 | List widgetPoints = [
15 | WidgetPoint(
16 | name: 'BottomNavigationBar',
17 | routerName: BottomNavigationBar.Demo.routeName,
18 | buildRouter: (BuildContext context) => BottomNavigationBar.Demo(),
19 | ),
20 | WidgetPoint(
21 | name: 'BottomNavigationBarItem',
22 | routerName: BottomNavigationBarItem.Demo.routeName,
23 | buildRouter: (BuildContext context) => BottomNavigationBarItem.Demo(),
24 | )
25 | ];
26 |
--------------------------------------------------------------------------------
/lib/widgets/components/Panel/ExpansionPanel/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-21 11:35:39
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-21 11:36:23
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 扩展面板,包含一个标题和一个正文,可以展开或者折叠。面板展开,主体可见。
14 |
15 |
16 | ''';
17 | const String content1 = '''
18 | ### **基本用法**
19 |
20 | ''';
21 |
22 | class Demo extends StatefulWidget {
23 | static const String routeName = '/components/Panel/ExpansionPanel';
24 | _DemoState createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | contentList: [
32 | content0,
33 | content1,
34 | ExpansionPanelsDemo(),
35 | ],
36 | codeUrl: 'widgets/components/Panel/ExpansionPanel/demo.dart',
37 | docUrl: 'https://docs.flutter.io/flutter/material/RawChip-class.html',
38 | title: 'ExpansionPanel');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Panel/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../model/widget.dart';
4 | import 'ExpansionPanel/index.dart' as ExpansionPanel;
5 | import 'ExpansionPanelList/index.dart' as ExpansionPanelList;
6 | import 'ExpansionPanelRadio/index.dart' as ExpansionPanelRadio;
7 |
8 | List widgetPoints = [
9 | WidgetPoint(
10 | name: 'ExpansionPanel',
11 | routerName: ExpansionPanel.Demo.routeName,
12 | buildRouter: (BuildContext context) => ExpansionPanel.Demo(),
13 | ),
14 | WidgetPoint(
15 | name: 'ExpansionPanelRadio',
16 | routerName: ExpansionPanelRadio.Demo.routeName,
17 | buildRouter: (BuildContext context) => ExpansionPanelRadio.Demo(),
18 | ),
19 | WidgetPoint(
20 | name: 'ExpansionPanelList',
21 | routerName: ExpansionPanelList.Demo.routeName,
22 | buildRouter: (BuildContext context) => ExpansionPanelList.Demo(),
23 | ),
24 | ];
25 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/CityPIcker/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 05/02/2019
4 | /// Time: 22:06
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:city_pickers/city_pickers.dart';
10 |
11 | class CityPickerDemo extends StatefulWidget {
12 | _Demo createState() => _Demo();
13 | }
14 |
15 | class _Demo extends State {
16 | String _result;
17 | show(context) async {
18 | Result temp = await CityPickers.showCityPicker(
19 | context: context,
20 | // locationCode: '640221',
21 | height: 400,
22 | );
23 | setState(() {
24 | _result = "${temp.toString()}";
25 | });
26 | }
27 |
28 | Widget build(BuildContext context) {
29 | return Center(
30 | child: Column(
31 | children: [
32 | Text("result: ${_result.toString()}"),
33 | RaisedButton(
34 | onPressed: () {
35 | this.show(context);
36 | },
37 | child: Text("select"),
38 | ),
39 | ],
40 | ));
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/CityPIcker/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 05/02/2019
4 | /// Time: 22:06
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const String content0 = '''
14 | ### **简介**
15 | > 显示中国的省市县地区
16 | 通过函数 **showCityPicker** 调用, 在容器窗口上弹出遮罩层
17 | ''';
18 | const String content1 = '''
19 | ### **基本用法**
20 | - locationCode 初始化地区选择
21 | - height 弹出层高度
22 | - context 上下文对象
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/components/Pick/CityPicker';
27 | _Demo createState() => _Demo();
28 | }
29 |
30 | class _Demo extends State {
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | title: 'CityPicker',
34 | codeUrl: '',
35 | docUrl: '',
36 | contentList: [content0, content1, CityPickerDemo()],
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/DayPicker/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-17 15:37:16
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-17 15:50:02
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 显示给定月份的日期,并可以选择一天
14 | - 该选择器widget很少使用,相反,请考虑使用showDatePicker,它会创建一个日期选择器对话框
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - currentDate,设置显示器当前显示时间
19 | - displayedMonth ,设置选择器显示天数的月份
20 | - firstDate,设置选择的最早日期
21 | - lastDate,设置可选择的最晚日期
22 | - selectedDate,设置当前选择的日期
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/components/Pick/DayPicker';
27 |
28 | _DemoState createState() => _DemoState();
29 | }
30 |
31 | class _DemoState extends State {
32 | @override
33 | Widget build(BuildContext context) {
34 | return WidgetDemo(
35 | contentList: [content0, content1, DayPickerDemo()],
36 | codeUrl: 'components/Pick/DayPicker/demo.dart',
37 | docUrl: "https://docs.flutter.io/flutter/material/DayPicker-class.html",
38 | title: 'DayPicker');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/MonthPicker/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-17 15:37:16
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-17 17:06:34
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 运行选择一个月的可滚动月份列表
14 | - 年份选择器widget很少使用,相反,请考虑使用showDatePicker,它会创建一个日期选择器对话框
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - firstData,设置用户选择的最早日期
19 | - lastData,设置用户可选择的最晚日期
20 | - selectedDate,设置当前选择的日期
21 | - onchanged,当用户选择一个月的时候调用
22 | ''';
23 |
24 | class Demo extends StatefulWidget {
25 | static const String routeName = '/components/Pick/MonthPicker';
26 |
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | contentList: [content0, content1, MothPickerDemo()],
35 | codeUrl: 'components/Pick/MonthPicker/demo.dart',
36 | docUrl:
37 | "https://docs.flutter.io/flutter/material/MonthPicker-class.html",
38 | title: 'MonthPicker');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/ShowdatePicker/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-17 15:37:16
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-17 16:00:07
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 日期选择器的对话框
14 | - 返回为Futer,为用户关闭对话框时用户选择的日期。如果用户取消该对话框,则返回为null
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - selectableDayPredicate可以传入自定义选择的天数。
19 | - 可选initialDatePickerMode参数可用于最初在年或月+日选择器模式中显示日期选择器。默认为月+日,且不能为空。
20 | - 可选locale参数可用于设置日期选择器的区域设置
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/components/Pick/ShowdatePicker';
25 |
26 | _DemoState createState() => _DemoState();
27 | }
28 |
29 | class _DemoState extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | contentList: [content0, content1, ShowDatePickerDemo()],
34 | codeUrl: 'components/Pick/ShowdatePicker/demo.dart',
35 | docUrl: 'https://docs.flutter.io/flutter/material/showDatePicker.html',
36 | title: 'ShowDatePicker');
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/YearPicker/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-17 15:37:16
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-17 16:00:07
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import 'demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 运行选择一年的可滚动年份列表
14 | - 年份选择器widget很少使用,相反,请考虑使用showDatePicker,它会创建一个日期选择器对话框
15 | ''';
16 | const String content1 = '''
17 | ### **基本用法**
18 | - 使用firstData,设置用户选择的最早日期
19 | - 使用lastData,设置用户可选择的最晚日期
20 | - 使用selectedDate,设置当前选择的日期
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/components/Pick/YearPicker';
25 |
26 | _DemoState createState() => _DemoState();
27 | }
28 |
29 | class _DemoState extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | contentList: [content0, content1, YearPickerDemo()],
34 | codeUrl: 'components/Pick/YearPicker/demo.dart',
35 | docUrl:
36 | 'https://docs.flutter.io/flutter/material/YearPicker-class.html',
37 | title: 'YearPicker');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/components/Pick/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../model/widget.dart';
4 | import 'YearPicker/index.dart' as YearPicker;
5 | import 'DayPicker/index.dart' as DayPicker;
6 | import 'MonthPicker/index.dart' as MonthPicker;
7 | import 'ShowdatePicker/index.dart' as ShowdatePicker;
8 | import 'CityPIcker/index.dart' as CityPicker;
9 |
10 | List widgetPoints = [
11 | WidgetPoint(
12 | name: 'YearPicker',
13 | routerName: YearPicker.Demo.routeName,
14 | buildRouter: (BuildContext context) => YearPicker.Demo(),
15 | ),
16 | WidgetPoint(
17 | name: 'MonthPicker',
18 | routerName: MonthPicker.Demo.routeName,
19 | buildRouter: (BuildContext context) => MonthPicker.Demo(),
20 | ),
21 | WidgetPoint(
22 | name: 'DayPicker',
23 | routerName: DayPicker.Demo.routeName,
24 | buildRouter: (BuildContext context) => DayPicker.Demo(),
25 | ),
26 | WidgetPoint(
27 | name: 'ShowdatePicker',
28 | routerName: ShowdatePicker.Demo.routeName,
29 | buildRouter: (BuildContext context) => ShowdatePicker.Demo(),
30 | ),
31 | WidgetPoint(
32 | name: 'CityPicker',
33 | routerName: CityPicker.Demo.routeName,
34 | buildRouter: (BuildContext context) => CityPicker.Demo(),
35 | ),
36 | ];
37 |
--------------------------------------------------------------------------------
/lib/widgets/components/Progress/CircularProgressIndicator/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CircularDemo extends StatefulWidget {
4 | @override
5 | _CircularDemoState createState() => _CircularDemoState();
6 | }
7 |
8 | class _CircularDemoState extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Row(
12 | mainAxisAlignment: MainAxisAlignment.spaceAround,
13 | children: [
14 | SizedBox(
15 | height: 20,
16 | width: 20,
17 | child: CircularProgressIndicator(
18 | backgroundColor: Colors.red,
19 | ),
20 | ),
21 | SizedBox(
22 | height: 30,
23 | width: 30,
24 | child: CircularProgressIndicator(
25 | backgroundColor: Colors.red,
26 | ),
27 | ),
28 | CircularProgressIndicator(
29 | backgroundColor: Colors.redAccent,
30 | ),
31 | SizedBox(
32 | height: 50,
33 | width: 50,
34 | child: CircularProgressIndicator(
35 | backgroundColor: Colors.red,
36 | ),
37 | ),
38 | ],
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/widgets/components/Progress/LinearProgressIndicator/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class LinearProgressIndicatorDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Container(
7 | width: 200.0,
8 | child: LinearProgressIndicator(),
9 | );
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/widgets/components/Progress/RefreshProgressIndicator/demo.dart:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/lib/widgets/components/Progress/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../model/widget.dart';
4 | import 'LinearProgressIndicator/index.dart' as LinearProgressIndicator;
5 | import 'CircularProgressIndicator/index.dart' as CircularProgressIndicator;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'LinearProgressIndicator',
10 | routerName: LinearProgressIndicator.Demo.routeName,
11 | buildRouter: (BuildContext context) => LinearProgressIndicator.Demo(),
12 | ),
13 | WidgetPoint(
14 | name: 'CircularProgressIndicator',
15 | routerName: CircularProgressIndicator.Demo.routeName,
16 | buildRouter: (BuildContext context) => CircularProgressIndicator.Demo(),
17 | ),
18 | ];
19 |
--------------------------------------------------------------------------------
/lib/widgets/components/Scaffold/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 07/01/2019
4 | /// Time: 14:53
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import "package:flutter/material.dart";
9 |
10 | import '../../../model/widget.dart';
11 | import 'Scaffold/index.dart' as Scaffold;
12 | import 'ScaffoldState/index.dart' as ScaffoldState;
13 |
14 | List widgetPoints = [
15 | WidgetPoint(
16 | name: 'Scaffold',
17 | routerName: Scaffold.Demo.routeName,
18 | buildRouter: (BuildContext context) => Scaffold.Demo(),
19 | ),
20 | WidgetPoint(
21 | name: 'ScaffoldState',
22 | routerName: ScaffoldState.Demo.routeName,
23 | buildRouter: (BuildContext context) => ScaffoldState.Demo(),
24 | ),
25 | ];
26 |
--------------------------------------------------------------------------------
/lib/widgets/components/Scroll/Scrollable/demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-10 21:32:07
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-15 16:26:20
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class ScrollableDemo extends StatefulWidget {
9 | _ScrollableDemoState createState() => _ScrollableDemoState();
10 | }
11 |
12 | class _ScrollableDemoState extends State {
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | child: Container(
17 | height: 100.0,
18 | child: Text('暂无Demo'),
19 | ),
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/widgets/components/Tab/Tab/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-22 20:37:58
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-22 20:49:56
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 属于 Material 风格下的一个widget
14 | - 如果同时给Tab传入icon和text,text将会被展现在icon的下面
15 | ''';
16 |
17 | const String content1 = '''
18 | ### **基本用法**
19 | > 通常需要配合TabBar TabBarView使用
20 | - TabBar中的children和TabBarView中的数组成一一对应关系
21 | - TabController 可以协调TabBarView和Tab之间的选择和个数等
22 | ''';
23 |
24 | class Demo extends StatefulWidget {
25 | static const String routeName = '/components/Tab/Tab';
26 | _DemoState createState() => _DemoState();
27 | }
28 |
29 | class _DemoState extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | codeUrl: 'components/Tab/Tab/demo.dart',
34 | docUrl: 'https://docs.flutter.io/flutter/material/Tab-class.html',
35 | title: 'Tab',
36 | contentList: [
37 | content0,
38 | content1,
39 | TabDemo(),
40 | ],
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/widgets/components/Tab/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-22 20:37:45
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-22 20:43:15
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import '../../../model/widget.dart';
9 | import './Tab/index.dart' as Tab;
10 |
11 | List widgetPoints = [
12 | WidgetPoint(
13 | name: 'Tab',
14 | routerName: Tab.Demo.routeName,
15 | buildRouter: (BuildContext context) => Tab.Demo(),
16 | ),
17 | ];
18 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/CheckBox/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import 'Checkbox/index.dart' as Checkbox;
5 | import 'CheckboxListTile/index.dart' as CheckboxListTile;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'Checkbox',
10 | routerName: Checkbox.Demo.routeName,
11 | buildRouter: (BuildContext context) => Checkbox.Demo(),
12 | ),
13 | WidgetPoint(
14 | name: 'CheckboxListTile',
15 | routerName: CheckboxListTile.Demo.routeName,
16 | buildRouter: (BuildContext context) => CheckboxListTile.Demo(),
17 | )
18 | ];
19 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Input/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with FlutterGo.
2 | /// User: 一晟
3 | /// Date: 2018/11/14
4 | /// Time: 下午4:31
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: Input 的示例
7 | /// 对应文档地址:https://docs.flutter.io/flutter/material/RaisedButton-class.html
8 |
9 | import "package:flutter/material.dart";
10 |
11 | import '../../../../model/widget.dart';
12 | import './TextField/index.dart' as TextField;
13 |
14 | List widgetPoints = [
15 | WidgetPoint(
16 | name: 'TextField',
17 | routerName: TextField.Demo.routeName,
18 | buildRouter: (BuildContext context) => TextField.Demo(),
19 | ),
20 | ];
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 20/12/2018
4 | /// Time: 14:32
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | class DemoA extends StatefulWidget {
11 | _Demo createState() => _Demo();
12 | }
13 |
14 | class _Demo extends State {
15 | String value = '';
16 |
17 | onChange(v) {
18 | this.setState(() {
19 | value = v;
20 | });
21 | }
22 |
23 | Widget build(BuildContext context) {
24 | return Column(
25 | children: [
26 | RadioListTile(
27 | title: const Text('A'),
28 | value: "A",
29 | groupValue: this.value,
30 | isThreeLine: false,
31 | subtitle: const Text("subtitleA"),
32 | onChanged: onChange),
33 | RadioListTile(
34 | title: const Text('B'),
35 | value: "B",
36 | subtitle: const Text("subtitleB"),
37 | groupValue: this.value,
38 | onChanged: onChange),
39 | ],
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Radio/RadioListTile/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 22/11/2018
4 | /// Time: 19:17
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: Radio相关
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import 'demo.dart';
12 |
13 | const content1 = """
14 | ### **简介**
15 | > material design 风格的单选按钮附加文字label
16 |
17 | 点击文字的同时 , 将会触发Radio的点击效果.
18 |
19 | 功能同 @Radio
20 |
21 | ### **基本用法**
22 | Radio是单选框,和checkbox一样本身不包含状态,当groupValue = value时代表选中状态
23 | """;
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/element/Form/RadioListTile/index';
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | contentList: [content1, new DemoA()],
35 | title: 'RadioListTile',
36 | docUrl:
37 | 'https://docs.flutter.io/flutter/material/RadioListTile-class.html',
38 | codeUrl: 'elements/Form/Radio/RadioListTile/demo.dart',
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Radio/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import 'Radio/index.dart' as Radio;
5 | import 'RadioListTile/index.dart' as RadioTile;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'Radio',
10 | routerName: Radio.Demo.routeName,
11 | buildRouter: (BuildContext context) => Radio.Demo(),
12 | ),
13 | WidgetPoint(
14 | name: 'RadioListTile',
15 | routerName: RadioTile.Demo.routeName,
16 | buildRouter: (BuildContext context) => RadioTile.Demo(),
17 | ),
18 | ];
19 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 20/12/2018
4 | /// Time: 17:43
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter/cupertino.dart';
10 |
11 | import 'package:flutter_go/components/widget_demo.dart';
12 | import 'demo.dart';
13 |
14 | const contentA = '''
15 | ### **简介**
16 | > SliderTheme的data修饰属性 **SliderThemeData**
17 |
18 |
19 |
20 | ### **基本用法**
21 |
22 | > 配合SliderTheme, 修改slider组件各个部件的样式, 参照@Slider的各组件命名, 修改各部件样式
23 |
24 |
25 |
26 | ''';
27 |
28 | class Demo extends StatefulWidget {
29 | static const String routeName = 'elements/Form/Slider/SliderThemeData';
30 | _Demo createState() => _Demo();
31 | }
32 |
33 | class _Demo extends State {
34 | Color c = CupertinoColors.activeBlue;
35 | @override
36 | Widget build(BuildContext context) {
37 | return WidgetDemo(
38 | title: 'SliderThemeData',
39 | codeUrl: 'elements/Form/Slider/SliderThemeData/demo.dart',
40 | contentList: [contentA, SliderThemeDemo()],
41 | docUrl:
42 | 'https://docs.flutter.io/flutter/material/SliderThemeData-class.html',
43 | );
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Slider/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import "Slider/index.dart" as Slider;
5 | import "SliderTheme/index.dart" as SliderTheme;
6 | import "SliderThemeData/index.dart" as SliderThemeData;
7 |
8 | List widgetPoints = [
9 | WidgetPoint(
10 | name: 'Slider',
11 | routerName: Slider.Demo.routeName,
12 | buildRouter: (BuildContext context) => Slider.Demo(),
13 | ),
14 | WidgetPoint(
15 | name: 'SliderTheme',
16 | routerName: SliderTheme.Demo.routeName,
17 | buildRouter: (BuildContext context) => SliderTheme.Demo(),
18 | ),
19 | WidgetPoint(
20 | name: 'SliderThemeData',
21 | routerName: SliderThemeData.Demo.routeName,
22 | buildRouter: (BuildContext context) => SliderThemeData.Demo(),
23 | )
24 | ];
25 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 28/12/2018
4 | /// Time: 19:54
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 |
12 | import 'demo.dart';
13 |
14 | const contentA = '''
15 | ### **简介**
16 | > 一个在新旧组件. 做渐变切换的组件. 有一定的动画效果
17 |
18 | *注意*:
19 | - 如果你切换的足够快.超过了间隔时间, 组件只会隐藏第一个 .并渐渐显示最后一个生效的组件.
20 | - 如果你变更的组件.只是同一个组件, 不同的state或者不同的显示数据与状态. 请为当前组件每一个状态加入一个Key. 强制生效动画效果.
21 |
22 |
23 |
24 | ### **基本实例**
25 |
26 | ''';
27 |
28 | class Demo extends StatefulWidget {
29 | static const String routeName = 'elements/Form/Switch/AnimatedSwitcher';
30 |
31 | _Demo createState() => _Demo();
32 | }
33 |
34 | class _Demo extends State {
35 | Widget build(BuildContext context) {
36 | return WidgetDemo(
37 | title: 'AnimatedSwitcher',
38 | codeUrl: 'elements/Form/Switch/AnimatedSwitcher/demo.dart',
39 | contentList: [contentA, AnimatedSwitcherDemo()],
40 | docUrl: '',
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 28/12/2018
4 | /// Time: 15:48
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | class SwitchListTileDemo extends StatefulWidget {
11 | _Demo createState() => _Demo();
12 | }
13 |
14 | class _Demo extends State {
15 | bool _lights = false;
16 | @override
17 | Widget build(BuildContext context) {
18 | return SwitchListTile(
19 | title: const Text('Lights'),
20 | value: _lights,
21 | onChanged: (bool value) {
22 | setState(() {
23 | _lights = value;
24 | });
25 | },
26 | secondary: const Icon(Icons.lightbulb_outline),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Switch/SwitchListTile/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 28/12/2018
4 | /// Time: 15:48
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 | import 'package:flutter/material.dart';
8 |
9 | import 'package:flutter_go/components/widget_demo.dart';
10 | import 'demo.dart';
11 |
12 | const contentA = '''
13 | ### **简介**
14 | > Switch 的一个衍生组件
15 |
16 | 基本用法与Switch相同.具体参考@Switch, 支持各种自定义样式.
17 |
18 |
19 |
20 | ### **基本实例**
21 |
22 | ''';
23 |
24 | class Demo extends StatefulWidget {
25 | static const String routeName = 'elements/Form/Switch/SwitchListTile';
26 | _Demo createState() => _Demo();
27 | }
28 |
29 | class _Demo extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | title: 'SwitchListTile',
34 | codeUrl: 'elements/Form/Switch/SwitchListTile/demo.dart',
35 | contentList: [contentA, SwitchListTileDemo()],
36 | docUrl: '',
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Switch/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import "Switch/index.dart" as Switch;
5 | import "SwitchListTile/index.dart" as SwitchListTile;
6 | import "AnimatedSwitcher/index.dart" as AnimatedSwitcher;
7 |
8 | List widgetPoints = [
9 | WidgetPoint(
10 | name: 'Switch',
11 | routerName: Switch.Demo.routeName,
12 | buildRouter: (BuildContext context) => Switch.Demo(),
13 | ),
14 | WidgetPoint(
15 | name: 'SwitchListTile',
16 | routerName: SwitchListTile.Demo.routeName,
17 | buildRouter: (BuildContext context) => SwitchListTile.Demo(),
18 | ),
19 | WidgetPoint(
20 | name: 'AnimatedSwitcher',
21 | routerName: AnimatedSwitcher.Demo.routeName,
22 | buildRouter: (BuildContext context) => AnimatedSwitcher.Demo(),
23 | )
24 | ];
25 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Text/RichText/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 14/01/2019
4 | /// Time: 19:02
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | class RichTextDemo extends StatefulWidget {
11 | _Demo createState() => _Demo();
12 | }
13 |
14 | class _Demo extends State {
15 | @override
16 | Widget build(BuildContext context) {
17 | return Container(
18 | color: Color(0xff000000),
19 | width: 750.0,
20 | child: RichText(
21 | text: TextSpan(
22 | text: 'Hello ',
23 | children: [
24 | TextSpan(
25 | text: 'bold',
26 | style: TextStyle(
27 | fontWeight: FontWeight.bold, color: Color(0xfffffc42))),
28 | TextSpan(
29 | text: ' world!', style: TextStyle(fontStyle: FontStyle.italic)),
30 | ],
31 | ),
32 | ),
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Text/RichText/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'package:flutter_go/widgets/elements/Form/Text/RichText/demo.dart';
5 |
6 | const String intro = """
7 | ### **简介**
8 |
9 | > 具有复杂样式的文本显示组件
10 |
11 | 在富文本使用多个不同风格的widget显示文本。要显示的文本使用TextSpan对象树来描述,每个对象都有一个用于该子树的关联样式。文本可能会跨越多行,也可能全部显示在同一行上,具体取决于布局约束。
12 |
13 | 无论是Text或者Text.rich, 查看源代码发现. 都是由RichText构建出来
14 |
15 |
16 | ### **基本用法**
17 | 我们可以让一段文本通过使用不同的TextSpan显示不同的样式。比如我们让"Hello beautiful world"的每个单词都显示不同的样式.
18 |
19 | """;
20 |
21 | class Demo extends StatefulWidget {
22 | static const String routeName = '/element/Form/Text/RichText';
23 | _Demo createState() => _Demo();
24 | }
25 |
26 | class _Demo extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | title: 'Rich Text',
31 | docUrl: 'https://docs.flutter.io/flutter/widgets/RichText-class.html',
32 | codeUrl: 'elements/Form/Text/RichText/demo.dart',
33 | contentList: [
34 | intro,
35 | RichTextDemo(),
36 | ]);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Text/Text/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 20/01/2019
4 | /// Time: 22:28
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: CupertinoTabBar
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter/cupertino.dart';
10 |
11 | class TextDemo extends StatefulWidget {
12 | _Demo createState() => _Demo();
13 | }
14 |
15 | class _Demo extends State {
16 | int index = 0;
17 | Duration timer = new Duration(minutes: 50);
18 | @override
19 | Widget build(BuildContext context) {
20 | return Text("i'm a text");
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Text/Text/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'demo.dart';
5 |
6 | const String intro = """
7 | ### **简介**
8 |
9 | > 具有某个单一样式的文本显示的widget组件, 显示支持一行或者多行. 默认样式会继承层级最为接近的 *DefaultStyle*
10 | 当然, 你也可以重新他的样式 将 *DefaultStyle.inherit 设置为 false*
11 |
12 | 是最基本的文本显示组件
13 |
14 | ### **基本用法**
15 | 在这里介绍一下他的基本属性说明.
16 |
17 | - data Text显示的文本,必填参数 String
18 | - textAlign 文本的对齐方式,可以选择左对齐、右对齐还是居中对齐 TextAlign
19 | - maxLines 文本显示的最大行数 int
20 | - overflow 文本显示的截断方式 TextOverflow
21 | - textScaleFactor 文本的缩放比例 double
22 | - style 用于指定文本显示的样式如颜色、字体、粗细、背景等
23 |
24 |
25 | ### **基本示例**
26 |
27 | """;
28 |
29 | class Demo extends StatefulWidget {
30 | static const String routeName = '/element/Form/Text/Text';
31 | _Demo createState() => _Demo();
32 | }
33 |
34 | class _Demo extends State {
35 | onButtonTap() {}
36 | @override
37 | Widget build(BuildContext context) {
38 | return WidgetDemo(
39 | title: "Text",
40 | docUrl: 'flutter/widgets/Text-class.html',
41 | codeUrl: 'elements/Form/Text/Text/demo.dart',
42 | contentList: [
43 | intro,
44 | TextDemo(),
45 | ]);
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/Text/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import 'RichText/index.dart' as RichText;
5 | import 'Text/index.dart' as Text;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'RichText',
10 | routerName: RichText.Demo.routeName,
11 | buildRouter: (BuildContext context) => RichText.Demo(),
12 | ),
13 | WidgetPoint(
14 | name: 'Text',
15 | routerName: Text.Demo.routeName,
16 | buildRouter: (BuildContext context) => Text.Demo(),
17 | ),
18 | ];
19 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Form/index.dart:
--------------------------------------------------------------------------------
1 | import 'Button/index.dart' as Button;
2 | import 'Text/index.dart' as Text;
3 | import 'Input/index.dart' as Input;
4 | import 'CheckBox/index.dart' as CheckBox;
5 | import 'Radio/index.dart' as Radio;
6 | import 'Slider/index.dart' as Slider;
7 | import 'Switch/index.dart' as Switch;
8 |
9 | List getWidgets() {
10 | List result = [];
11 | result.addAll(Button.widgetPoints);
12 | result.addAll(Text.widgetPoints);
13 | result.addAll(Input.widgetPoints);
14 | result.addAll(CheckBox.widgetPoints);
15 | result.addAll(Radio.widgetPoints);
16 | result.addAll(Slider.widgetPoints);
17 | result.addAll(Switch.widgetPoints);
18 | return result;
19 | }
20 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Align/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/model/widget.dart';
4 | import './Align/index.dart' as Align;
5 |
6 | List widgetPoints = [
7 | WidgetPoint(
8 | name: 'Align',
9 | routerName: Align.Demo.routeName,
10 | buildRouter: (BuildContext context) => Align.Demo(),
11 | ),
12 | ];
13 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Box/RotatedBox/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class RotatedDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Column(
7 | children: [
8 | RotatedBox(
9 | child: const Text('hello flutter'),
10 | quarterTurns: 3,
11 | ),
12 | SizedBox(
13 | height: 20.0,
14 | ),
15 | RotatedBox(
16 | child: const Text('hello flutter'),
17 | quarterTurns: 8,
18 | )
19 | ],
20 | );
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Box/SizeBox/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter/widgets.dart';
3 |
4 | class SizeBoxDefault extends StatelessWidget {
5 | @override
6 | Widget build(BuildContext context) {
7 | return SizedBox(
8 | width: 140.0,
9 | height: 80.0,
10 | child: const Card(
11 | child: Text(
12 | 'SizedBox',
13 | textDirection: TextDirection.rtl,
14 | ),
15 | margin: EdgeInsets.all(20.0),
16 | color: Color(0xFFEF9A9A),
17 | ),
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class UnconstrainedBoxDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return UnconstrainedBox(
7 | constrainedAxis: Axis.vertical,
8 | textDirection: TextDirection.rtl,
9 | child: Row(
10 | children: [
11 | Container(
12 | width: 100.0,
13 | height: 100.0,
14 | color: Color(0xfff48fb1),
15 | child: Text(
16 | "data",
17 | style: TextStyle(color: Colors.white),
18 | ),
19 | ),
20 | ],
21 | ),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Expanded/Expanded/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import './expanded_demo.dart';
5 |
6 | const contentText0 = '''
7 | ### **简介**
8 | > 一个用于撑开 flex 布局子组件空间的widget
9 | - 用于在Row、Column、Flex子组件内
10 | - 会沾满所有可用空间
11 | ''';
12 |
13 | const contentText1 = '''
14 | ### **基本用法**
15 | > 以下示例对比使用 ```Expanded```
16 | - 使用Expanded 可以使 Row、Column或者Flex的子项能够填充主轴的全部可用空间
17 | - 如果存在多个子项,则根据 flex 属性来划分可用空间
18 | - Expanded widget 必须是Row,Column或者Flex的后代
19 | ''';
20 |
21 | class Demo extends StatefulWidget {
22 | static const String routeName = '/element/Frame/Expanded/Expanded';
23 | _DemoState createState() => _DemoState();
24 | }
25 |
26 | class _DemoState extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | title: 'Expanded',
31 | codeUrl: 'elements/Frame/Expanded/Expanded/expanded_demo.dart',
32 | docUrl: 'https://docs.flutter.io/flutter/widgets/Expanded-class.html',
33 | contentList: [
34 | contentText0,
35 | contentText1,
36 | ExpandedDemo(),
37 | ],
38 | );
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Expanded/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/model/widget.dart';
4 |
5 | import './Expanded/index.dart' as Expanded;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'Expanded',
10 | routerName: Expanded.Demo.routeName,
11 | buildRouter: (BuildContext context) => Expanded.Demo(),
12 | ),
13 | ];
14 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Layout/Center/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class CenterDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Center(
7 | widthFactor: 2.0,
8 | heightFactor: 2.0,
9 | child: Container(
10 | color: Color(0xfff48fb1),
11 | width: 90.0,
12 | height: 50.0,
13 | ),
14 | );
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Layout/index.dart:
--------------------------------------------------------------------------------
1 | import "package:flutter/material.dart";
2 |
3 | import '../../../../model/widget.dart';
4 | import 'Row/index.dart' as Row;
5 | import 'Column/index.dart' as Column;
6 | import 'Container/index.dart' as Container;
7 | import 'Center/index.dart' as Center;
8 |
9 | List widgetPoints = [
10 | WidgetPoint(
11 | name: 'Row',
12 | routerName: Row.Demo.routeName,
13 | buildRouter: (BuildContext context) => Row.Demo(),
14 | ),
15 | WidgetPoint(
16 | name: 'Column',
17 | routerName: Column.Demo.routeName,
18 | buildRouter: (BuildContext context) => Column.Demo(),
19 | ),
20 | WidgetPoint(
21 | name: 'Container',
22 | routerName: Container.Demo.routeName,
23 | buildRouter: (BuildContext context) => Container.Demo(),
24 | ),
25 | WidgetPoint(
26 | name: 'Center',
27 | routerName: Center.Demo.routeName,
28 | buildRouter: (BuildContext context) => Center.Demo(),
29 | ),
30 | ];
31 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Spacing/AnimatedPadding/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-28 20:44:13
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2019-01-14 17:02:20
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './animatedPadding_demo.dart';
10 |
11 | const contentDesc0 = '''
12 | ### **简介**
13 | > 属于Flutter动画成员的一部分
14 | ''';
15 |
16 | const contentDesc1 = '''
17 | ### **基本用法**
18 | > 动画版本的Padding
19 | - 在给定的时间内,自动完成转换缩进到给定的padding值
20 | - 通过设置curve 来指定动画的运行速率动画
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/element/Frame/spacing/AnimatedPadding';
25 | _DemoState createState() => _DemoState();
26 | }
27 |
28 | class _DemoState extends State {
29 | @override
30 | Widget build(BuildContext context) {
31 | return WidgetDemo(
32 | title: 'AnimatedPadding',
33 | contentList: [
34 | contentDesc0,
35 | contentDesc1,
36 | AnimatedPaddingDemo(),
37 | ],
38 | docUrl:
39 | 'https://docs.flutter.io/flutter/widgets/AnimatedPadding-class.html',
40 | codeUrl:
41 | 'elements/Frame/Spacing/AnimatedPadding/animatedPadding_demo.dart',
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Spacing/Padding/index.dart:
--------------------------------------------------------------------------------
1 | /// Author: 一凨
2 | /// Date: 2018-11-28 20:25:24
3 | /// Last Modified by: 一凨
4 | /// Last Modified time: 2019-01-14 17:01:55
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './padding_demo.dart';
10 |
11 | const contentDesc0 = '''
12 | ### **简介**
13 | > widget 内边距
14 | - 类似于前端中的 div+css:padding 效果
15 | - Container + padding = Padding
16 | ''';
17 |
18 | const contentDesc1 = '''
19 | ### **基本用法**
20 | > Padding widget 的padding必须设置,不能为null
21 | - 通过给定的padding值来隔开子组件
22 | - 通过EdgeInsets 类来计算 padding的大小
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/element/Frame/spacing/Padding';
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | title: 'Padding',
35 | contentList: [contentDesc0, contentDesc1, PaddingDemo()],
36 | docUrl: 'https://docs.flutter.io/flutter/widgets/Padding-class.html',
37 | codeUrl: 'elements/Frame/Spacing/Padding/padding_demo.dart',
38 | );
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Spacing/Padding/padding_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-28 20:20:04
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2019-01-14 16:30:16
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class PaddingDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | color: Colors.blueAccent,
13 | child: Padding(
14 | padding: const EdgeInsets.all(18.0), //通过 EdgeInsets 来设置 padding的值
15 | child: Container(
16 | height: 100.0,
17 | width: 100.0,
18 | color: Colors.amberAccent,
19 | ),
20 | ),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Spacing/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../../../../model/widget.dart';
4 | import './Padding/index.dart' as Padding;
5 | import './SliverPadding/index.dart' as SliverPadding;
6 | import './AnimatedPadding/index.dart' as AnimatedPadding;
7 |
8 | List widgetPoints = [
9 | WidgetPoint(
10 | name: 'Padding',
11 | routerName: Padding.Demo.routeName,
12 | buildRouter: (BuildContext context) => Padding.Demo(),
13 | ),
14 | WidgetPoint(
15 | name: 'SliverPadding',
16 | routerName: SliverPadding.Demo.routeName,
17 | buildRouter: (BuildContext context) => SliverPadding.Demo(),
18 | ),
19 | WidgetPoint(
20 | name: 'AnimatedPadding',
21 | routerName: AnimatedPadding.Demo.routeName,
22 | buildRouter: (BuildContext context) => AnimatedPadding.Demo(),
23 | ),
24 | ];
25 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Stack/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/model/widget.dart';
4 | import './Stack/index.dart' as Stack;
5 | import './IndexedStack/index.dart' as IndexedStack;
6 |
7 | List widgetPoints = [
8 | WidgetPoint(
9 | name: 'Stack',
10 | routerName: Stack.Demo.routeName,
11 | buildRouter: (BuildContext context) => Stack.Demo(),
12 | ),
13 | WidgetPoint(
14 | name: 'IndexedStack',
15 | routerName: IndexedStack.Demo.routeName,
16 | buildRouter: (BuildContext context) => IndexedStack.Demo(),
17 | ),
18 | ];
19 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Table/Table/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import './table_demo.dart';
5 |
6 | const contentDesc0 = '''
7 | ### **简介**
8 | > 一种布局方法
9 | - 一个可以对齐子元素进行table 布局算法的Widget
10 | ''';
11 | const contentDesc1 = '''
12 | ### **基本用法**
13 | > 大多用于多行多列的需求
14 | - 如果你只有一行或者一列,其实选择Row和Column更合适一些
15 | - 表格中行的大小是根据列行数和宽度计算的来,控制列宽可以使用 columnWidth 属性
16 | - 注意,Table中每一行的列数需要一致,否则报错
17 | ''';
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName = '/element/Frame/Table/Table';
21 | _DemoState createState() => _DemoState();
22 | }
23 |
24 | class _DemoState extends State {
25 | @override
26 | Widget build(BuildContext context) {
27 | return WidgetDemo(
28 | title: 'Table',
29 | codeUrl: 'elements/Frame/Table/Table/table_demo.dart',
30 | contentList: [
31 | contentDesc0,
32 | contentDesc1,
33 | TableDemo(),
34 | ],
35 | docUrl: 'https://docs.flutter.io/flutter/widgets/Table-class.html',
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/Table/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import '../../../../model/widget.dart';
4 | import './Table/index.dart' as Table;
5 |
6 | List widgetPoints = [
7 | WidgetPoint(
8 | name: 'Table',
9 | routerName: Table.Demo.routeName,
10 | buildRouter: (BuildContext context) => Table.Demo(),
11 | ),
12 | ];
13 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Frame/index.dart:
--------------------------------------------------------------------------------
1 | import 'Spacing/index.dart' as Spacing;
2 | import 'Expanded/index.dart' as Expanded;
3 | import 'Table/index.dart' as Table;
4 | import 'Align/index.dart' as Align;
5 | import 'Layout/index.dart' as Layout;
6 | import 'Stack/index.dart' as Stack;
7 | import 'Box/index.dart' as Box;
8 |
9 | List getWidgets() {
10 | List result = [];
11 | result.addAll(Spacing.widgetPoints);
12 | result.addAll(Expanded.widgetPoints);
13 | // result.addAll(Axis.widgetPoints);
14 | result.addAll(Table.widgetPoints);
15 | result.addAll(Align.widgetPoints);
16 | result.addAll(Layout.widgetPoints);
17 | result.addAll(Stack.widgetPoints);
18 | result.addAll(Box.widgetPoints);
19 | return result;
20 | }
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_go/components/widget_demo.dart';
3 | import './demo.dart' as demoBoxs;
4 |
5 | const Text = '''
6 | ### **简介**
7 | > 操作图形的界面;
8 |
9 | ''';
10 | const Text1 = '''
11 | ### **基本用法**
12 | - canvas + Animation 实现一个 loading 效果;
13 | ''';
14 |
15 | class Demo extends StatefulWidget {
16 | static const String routeName =
17 | '/element/Media/Canvas/CircleProgressBarPainter';
18 |
19 | _DemoState createState() => _DemoState();
20 | }
21 |
22 | class _DemoState extends State {
23 | @override
24 | Widget build(BuildContext context) {
25 | return WidgetDemo(
26 | title: 'CircleProgressBarPainter',
27 | codeUrl: 'elements/Media/Canvas/CircleProgressBarPainter/demo.dart',
28 | contentList: [Text, Text1, demoBoxs.CustomViewPage()],
29 | docUrl: 'https://docs.flutter.io/flutter/dart-ui/Canvas-class.html',
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Canvas/PainterSketch/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import './demo.dart' as demoBoxs;
5 |
6 | const Text = '''
7 | ### **简介**
8 | > 操作图形的界面;
9 |
10 | ''';
11 | const Text1 = '''
12 | ### **基本用法**
13 | - canvas + paint + GestureDetector 实现一个 简易的画板;
14 | ''';
15 |
16 | class Demo extends StatefulWidget {
17 | static const String routeName = '/element/Media/Canvas/PainterSketch';
18 |
19 | _DemoState createState() => _DemoState();
20 | }
21 |
22 | class _DemoState extends State {
23 | @override
24 | Widget build(BuildContext context) {
25 | return WidgetDemo(
26 | title: 'PainterSketch',
27 | codeUrl: 'elements/Media/Canvas/PainterSketch/demo.dart',
28 | contentList: [Text, Text1, demoBoxs.PainterSketchDome()],
29 | docUrl: 'https://docs.flutter.io/flutter/dart-ui/Paint-class.html',
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Canvas/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_go/model/widget.dart';
2 | import "package:flutter/material.dart";
3 |
4 | import 'PainterSketch/index.dart' as PainterSketch;
5 | import 'Canvas/index.dart' as Canvas;
6 | import 'PainterPath/index.dart' as PainterPath;
7 | import 'CircleProgressBarPainter/index.dart' as CircleProgressBarPainter;
8 |
9 | List widgetPoints = [
10 | WidgetPoint(
11 | name: 'PainterSketch',
12 | routerName: PainterSketch.Demo.routeName,
13 | buildRouter: (BuildContext context) => PainterSketch.Demo(),
14 | ),
15 | WidgetPoint(
16 | name: 'Canvas',
17 | routerName: Canvas.Demo.routeName,
18 | buildRouter: (BuildContext context) => Canvas.Demo(),
19 | ),
20 | WidgetPoint(
21 | name: 'PainterPath',
22 | routerName: PainterPath.Demo.routeName,
23 | buildRouter: (BuildContext context) => PainterPath.Demo(),
24 | ),
25 | WidgetPoint(
26 | name: 'CircleProgressBarPainter',
27 | routerName: CircleProgressBarPainter.Demo.routeName,
28 | buildRouter: (BuildContext context) => CircleProgressBarPainter.Demo(),
29 | )
30 | ];
31 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Icon/Icon/demo.dart:
--------------------------------------------------------------------------------
1 | /// Author: xiaojia.dxj
2 | /// Date: 2018-12-15 15:10:34
3 | /// Email: xiaojia.dxj@alibaba-inc.com
4 | /// Last Modified by: xiaojia.dxj
5 | /// Last Modified time: 2018-12-17 11:09:17
6 | import 'package:flutter/material.dart';
7 |
8 | class IconDemo extends StatelessWidget {
9 | final Color curColor;
10 |
11 | IconDemo({Key key, this.curColor}) : super();
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | child: Icon(
17 | Icons.favorite,
18 | color: this.curColor,
19 | size: 30.0,
20 | ),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Icon/IconData/demo.dart:
--------------------------------------------------------------------------------
1 | /// Author: xiaojia.dxj
2 | /// Date: 2018-12-15 10:15:34
3 | /// Email: xiaojia.dxj@alibaba-inc.com
4 | /// Last Modified by: xiaojia.dxj
5 | /// Last Modified time: 2018-12-17 11:38:50
6 | import 'package:flutter/material.dart';
7 |
8 | class IconDataDemo extends StatelessWidget {
9 | final Color curColor;
10 |
11 | IconDataDemo({Key key, this.curColor}) : super();
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Container(
16 | child: Icon(
17 | //参考 icon constans
18 | IconData(0xe567, fontFamily: 'MaterialIcons', matchTextDirection: true),
19 | color: this.curColor,
20 | size: 30.0,
21 | ),
22 | );
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Icon/ImageIcon/demo.dart:
--------------------------------------------------------------------------------
1 | /// Author: xiaojia.dxj
2 | /// Date: 2018-12-15 15:19:41
3 | /// Email: xiaojia.dxj@alibaba-inc.com
4 | /// Last Modified by: xiaojia.dxj
5 | /// Last Modified time: 2018-12-17 10:07:19
6 |
7 | import 'package:flutter/material.dart';
8 |
9 | class ImageIconDemo extends StatelessWidget {
10 | @override
11 | Widget build(BuildContext context) {
12 | //注意:当你用一个图片的时候,这个图片会被整个覆盖,只保留图片的形状,填充你设置的颜色
13 | return ImageIcon(
14 | AssetImage('assets/images/btn_icon_dingyuehao_normal.png'),
15 | color: Colors.red,
16 | size: 50.0,
17 | );
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Icon/ImageIcon/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_go/components/widget_demo.dart';
3 | import './demo.dart';
4 |
5 | const Text = '''
6 | ### **简介**
7 | > 来自ImageProvider的图标,例如AssetImage。
8 | - 图标由其名称标示
9 | ''';
10 | const Text1 = '''
11 | ### **基本用法**
12 | - 创建图像图标,在size和color默认为当前给定的值IconTheme
13 | - 当你用一个图片时,这个图片会被填充你设置的颜色,只保留图片的形状,
14 | - 即填充图片像素所在的所有位置
15 | ''';
16 |
17 | class Demo extends StatefulWidget {
18 | static const String routeName = '/element/Media/Icon/ImageIcon';
19 |
20 | _DemoState createState() => _DemoState();
21 | }
22 |
23 | class _DemoState extends State {
24 | @override
25 | Widget build(BuildContext context) {
26 | return WidgetDemo(
27 | title: 'ImageIcon',
28 | codeUrl: 'elements/Media/Icon/ImageIcon/demo.dart',
29 | contentList: [
30 | Text,
31 | Text1,
32 | ImageIconDemo(),
33 | ],
34 | docUrl: 'https://docs.flutter.io/flutter/widgets/ImageIcon-class.html',
35 | );
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Icon/index.dart:
--------------------------------------------------------------------------------
1 | import '../../../../model/widget.dart';
2 | import "package:flutter/material.dart";
3 |
4 | import 'Icon/index.dart' as Icon;
5 | import 'ImageIcon/index.dart' as ImageIcon;
6 | import 'IconTheme/index.dart' as IconTheme;
7 | import 'IconData/index.dart' as IconData;
8 | import 'IconThemeData/index.dart' as IconThemeData;
9 |
10 | List widgetPoints = [
11 | WidgetPoint(
12 | name: 'Icon',
13 | routerName: Icon.Demo.routeName,
14 | buildRouter: (BuildContext context) => Icon.Demo(),
15 | ),
16 | WidgetPoint(
17 | name: 'ImageIcon',
18 | routerName: ImageIcon.Demo.routeName,
19 | buildRouter: (BuildContext context) => ImageIcon.Demo(),
20 | ),
21 | WidgetPoint(
22 | name: 'IconTheme',
23 | routerName: IconTheme.Demo.routeName,
24 | buildRouter: (BuildContext context) => IconTheme.Demo(),
25 | ),
26 | WidgetPoint(
27 | name: 'IconData',
28 | routerName: IconData.Demo.routeName,
29 | buildRouter: (BuildContext context) => IconData.Demo(),
30 | ),
31 | WidgetPoint(
32 | name: 'IconThemeData',
33 | routerName: IconThemeData.Demo.routeName,
34 | buildRouter: (BuildContext context) => IconThemeData.Demo(),
35 | ),
36 | ];
37 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/AssetImage/assetImage_demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AssetImageDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Column(
7 | children: [
8 | CircleAvatar(
9 | backgroundImage: AssetImage('assets/images/food01.jpeg'),
10 | ),
11 | Container(
12 | child: Image(
13 | image: AssetImage('assets/images/food02.jpeg'),
14 | height: 300.0,
15 | width: 300.0,
16 | ),
17 | )
18 | ],
19 | );
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/DecorationImage/decorationImage_demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class DecorationImageDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Container(
7 | child: Center(
8 | child: Text(
9 | 'Container',
10 | style: TextStyle(color: Colors.red),
11 | ),
12 | ),
13 | height: 200.0,
14 | width: 200.0,
15 | decoration: BoxDecoration(
16 | color: Colors.blueAccent,
17 | image: DecorationImage(
18 | image: AssetImage('assets/images/food02.jpeg'), fit: BoxFit.cover),
19 | ),
20 | margin: const EdgeInsets.only(top: 10.0),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/DecorationImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:12
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-11-16 15:12:39
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './decorationImage_demo.dart';
10 |
11 | const contentText0 = '''
12 | ### **简介**
13 |
14 | > 修饰Box的图片
15 | ''';
16 |
17 | const contentText1 = '''
18 | ### **基本用法**
19 |
20 | > demo演示作为背景图片的样例
21 |
22 | - 一般配合BoxDecoration的img属性使用,设置背景图片
23 | - 也可以配合paintImage使用
24 | ''';
25 |
26 | class Demo extends StatefulWidget {
27 | static const String routeName = '/element/Media/Image/DecorationImage';
28 | _DemoState createState() => _DemoState();
29 | }
30 |
31 | class _DemoState extends State {
32 | @override
33 | Widget build(BuildContext context) {
34 | return WidgetDemo(
35 | contentList: [
36 | contentText0,
37 | contentText1,
38 | DecorationImageDemo(),
39 | ],
40 | codeUrl: 'elements/Media/Image/DecorationImage/decorationImage_demo.dart',
41 | docUrl:
42 | 'https://docs.flutter.io/flutter/painting/DecorationImage-class.html',
43 | title: 'DecorationImage',
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/DecorationImagePainter/decoration_image_painter_demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class DecorationImagePainterDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Container();
7 | }
8 | }
9 |
10 | // class ImagePainter extends CustomPainter{
11 |
12 | // Future getImage(String path) async {
13 | // ByteData data = await rootBundle.load(path);
14 | // ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List());
15 | // FrameInfo frameInfo = await codec.getNextFrame();
16 | // image = frameInfo.image;
17 | // return image;
18 | // }
19 |
20 | // @override
21 | // void paint(Canvas canvas, Size size) {
22 | // Paint paint = Paint()
23 | // ..color = Colors.black12
24 | // ..strokeCap = StrokeCap.round
25 | // ..strokeWidth = 3.0;
26 | // Image _image = Image(image: AssetImage('assets/images/food03.jpeg'),);
27 | // canvas.drawImage(_image,Offset.zero & size,paint));
28 | // }
29 |
30 | // @override
31 | // bool shouldRepaint(CustomPainter oldDelegate) {
32 | // // TODO: implement shouldRepaint
33 | // return false;
34 | // }
35 | // }
36 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/DecorationImagePainter/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:12
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-11-16 15:09:12
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 |
10 | const contentText0 = '''
11 | ### **简介**
12 | ''';
13 |
14 | class Demo extends StatefulWidget {
15 | static const String routeName = '/element/Media/Image/DecorationImagePainter';
16 | _DemoState createState() => _DemoState();
17 | }
18 |
19 | class _DemoState extends State {
20 | @override
21 | Widget build(BuildContext context) {
22 | return WidgetDemo(
23 | contentList: [],
24 | docUrl:
25 | 'https://docs.flutter.io/flutter/painting/DecorationImagePainter-class.html',
26 | codeUrl:
27 | 'elements/Media/Image/DecorationImagePainter/decoration_image_painter_demo.dart',
28 | title: 'DecorationImagePainter');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/ExactAssetImage/exact_asset_image_demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ExactAssetImageDemo extends StatelessWidget {
4 | @override
5 | Widget build(BuildContext context) {
6 | return Column(
7 | children: [
8 | Image(
9 | image: ExactAssetImage('assets/images/food02.jpeg', scale: 1.5),
10 | ),
11 | SizedBox(
12 | height: 20.0,
13 | ),
14 | Image(
15 | image: ExactAssetImage('assets/images/food02.jpeg', scale: 1.0),
16 | ),
17 | ],
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/ExactAssetImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 13:29:34
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 14:12:21
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './exact_asset_image_demo.dart';
10 |
11 | const contentText0 = '''
12 | ### **简介**
13 | > 类似带有scale属性的AssetImage
14 |
15 | 从```Image.asset```源码中可以看到
16 |
17 | ''';
18 |
19 | const contentText1 = '''
20 | ### **基本使用**
21 | - 使用方法与AssetImage类似
22 | - 可以理解为带有scale属性的AssetImage
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/element/Media/Image/ExactAssetImage';
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | contentList: [
35 | contentText0,
36 | contentText1,
37 | ExactAssetImageDemo(),
38 | ],
39 | title: 'ExactAssetImage',
40 | codeUrl:
41 | 'elements/Media/Image/ExactAssetImage/exact_asset_image_demo.dart',
42 | docUrl:
43 | 'https://docs.flutter.io/flutter/painting/ExactAssetImage-class.html',
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/FadeInImage/fade_in_image_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 16:08:41
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 16:22:50
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class FadeInImageDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Column(
12 | children: [
13 | ClipOval(
14 | child: FadeInImage.assetNetwork(
15 | placeholder: "assets/images/normal_user_icon.png", //预览图
16 | fit: BoxFit.fitWidth,
17 | image:
18 | "https://img.alicdn.com/tfs/TB148sWfMHqK1RjSZFgXXa7JXXa-536-482.png",
19 | width: 160.0,
20 | height: 160.0,
21 | ),
22 | ),
23 | SizedBox(
24 | height: 20.0,
25 | ),
26 | CircleAvatar(
27 | backgroundImage: NetworkImage(
28 | "https://img.alicdn.com/tfs/TB148sWfMHqK1RjSZFgXXa7JXXa-536-482.png"),
29 | child: Text("一凨"), //可以在图片上添加文字等等
30 | ),
31 | ],
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/FileImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 16:20:33
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 19:24:33
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './file_image_demo.dart';
10 |
11 | const contentText0 = '''
12 | ### **简介**
13 | > 用于展示本地的文件
14 | - 将给定的File对象解码为图片
15 | - 可以指定缩放scale
16 | ''';
17 |
18 | const contentText1 = '''
19 | ### **基本用法**
20 | > 简写形式和Image也都非常相似
21 | - Image.file 是ImageFile 的一种简写形式
22 | ''';
23 |
24 | class Demo extends StatefulWidget {
25 | static const String routeName = '/element/Media/Image/FileImage';
26 | _DemoState createState() => _DemoState();
27 | }
28 |
29 | class _DemoState extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | codeUrl: 'elements/Media/Image/FileImage/file_image_demo.dart',
34 | docUrl: 'https://docs.flutter.io/flutter/painting/FileImage-class.html',
35 | title: 'FileImage',
36 | contentList: [
37 | contentText0,
38 | contentText1,
39 | FileImageDemo(),
40 | ],
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/Image/demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2019-01-07 15:33:49
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2019-01-07 15:45:29
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class ImageDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container(
12 | child: Image.asset(
13 | 'assets/images/food05.jpeg',
14 | fit: BoxFit.contain,
15 | ),
16 | height: 300.0,
17 | width: 300.0,
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/MemoryImage/memory_image_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 17:49:19
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 20:46:37
5 |
6 | import 'dart:typed_data';
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter/services.dart' show rootBundle;
10 |
11 | class MemoryImageDemo extends StatefulWidget {
12 | _MemoryImageDemoState createState() => _MemoryImageDemoState();
13 | }
14 |
15 | class _MemoryImageDemoState extends State {
16 | Uint8List bytes;
17 |
18 | void initState() {
19 | super.initState();
20 | rootBundle.load('assets/images/food01.jpeg').then((data) {
21 | if (mounted) {
22 | setState(() {
23 | bytes = data.buffer.asUint8List();
24 | });
25 | }
26 | });
27 | }
28 |
29 | @override
30 | Widget build(BuildContext context) {
31 | final decoration = BoxDecoration(
32 | image: bytes == null
33 | ? null
34 | : DecorationImage(
35 | image: MemoryImage(bytes, scale: 1.0),
36 | ),
37 | );
38 | return Container(
39 | width: 300.0,
40 | height: 300.0,
41 | decoration: decoration,
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/NetworkImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:12
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 17:32:57
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './network_image_demo.dart';
10 |
11 | const contentText0 = '''
12 | ### **简介**
13 | > 展示网络图片的widget
14 | - 我们可以使用NetworkImage来获取网络图片并展示
15 | ''';
16 |
17 | const contentText1 = '''
18 | ### **基本用法**
19 | > Image.network 是 NetworkImage 提供给Image widget 的一种简写形式
20 | - 支持scale属性进行图片的缩放
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/element/Media/Image/NetworkImage';
25 | _DemoState createState() => _DemoState();
26 | }
27 |
28 | class _DemoState extends State {
29 | @override
30 | Widget build(BuildContext context) {
31 | return WidgetDemo(
32 | contentList: [
33 | contentText0,
34 | contentText1,
35 | NetworkImageDemo(),
36 | ],
37 | codeUrl: 'elements/Media/Image/NetworkImage/network_image_demo.dart',
38 | docUrl:
39 | 'https://docs.flutter.io/flutter/painting/NetworkImage-class.html',
40 | title: 'NetworkImage',
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/NetworkImage/network_image_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 17:20:37
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 17:35:36
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class NetworkImageDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Column(
12 | children: [
13 | Container(
14 | margin: const EdgeInsets.symmetric(vertical: 20.0),
15 | child: Text('Image.network的使用'),
16 | ),
17 | Image.network(
18 | 'https://gw.alicdn.com/tfs/TB1XD.ZuYwrBKNjSZPcXXXpapXa-255-251.png'),
19 | Container(
20 | child: Text('NetworkImage的使用,带有0.5倍缩放'),
21 | margin: const EdgeInsets.symmetric(vertical: 20.0),
22 | ),
23 | Image(
24 | image: NetworkImage(
25 | 'https://gw.alicdn.com/tfs/TB1XD.ZuYwrBKNjSZPcXXXpapXa-255-251.png',
26 | scale: 0.5),
27 | )
28 | ],
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/paintImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:12
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 20:19:01
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 |
10 | const String contentText0 = '''
11 | ### **非Widget 待删除**
12 |
13 | ''';
14 |
15 | const String contentText1 = '''
16 |
17 | ''';
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName = '/element/Media/Image/paintImage';
21 | _DemoState createState() => _DemoState();
22 | }
23 |
24 | class _DemoState extends State {
25 | @override
26 | Widget build(BuildContext context) {
27 | return WidgetDemo(
28 | contentList: [
29 | contentText0,
30 | ],
31 | codeUrl: 'elements/Media/Image/paintImage/paint_image_demo.dart',
32 | docUrl: 'https://docs.flutter.io/flutter/painting/paintImage.html',
33 | title: 'paintImage',
34 | );
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/paintImage/paint_image_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 17:46:57
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 17:46:57
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class PaintImageDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/precacheImage/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:12
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-11-16 15:09:12
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class Demo extends StatefulWidget {
9 | static const String routeName = '/element/Media/Image/precacheImage';
10 | _DemoState createState() => _DemoState();
11 | }
12 |
13 | class _DemoState extends State {
14 | @override
15 | Widget build(BuildContext context) {
16 | return Container(
17 | child: null,
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/Image/precacheImage/precache_image_demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-08 17:47:57
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-08 17:48:20
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | class PrecacheImageDemo extends StatelessWidget {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Container();
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/lib/widgets/elements/Media/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:27
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-11-16 15:09:27
5 |
6 | import 'Image/index.dart' as Image;
7 | import 'Icon/index.dart' as Icon;
8 | import 'Canvas/index.dart' as Canvas;
9 |
10 | List getWidgets() {
11 | List result = [];
12 | result.addAll(Image.widgetPoints);
13 | result.addAll(Icon.widgetPoints);
14 | result.addAll(Canvas.widgetPoints);
15 | return result;
16 | }
17 |
--------------------------------------------------------------------------------
/lib/widgets/elements/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-11-16 15:09:31
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-11-16 15:09:31
5 |
6 | import 'Form/index.dart' as Form;
7 | import 'Frame/index.dart' as Frame;
8 | import 'Media/index.dart' as Media;
9 |
10 | List getWidgets() {
11 | List result = [];
12 | result.addAll(Form.getWidgets());
13 | result.addAll(Frame.getWidgets());
14 | result.addAll(Media.getWidgets());
15 | return result;
16 | }
17 |
--------------------------------------------------------------------------------
/lib/widgets/index.dart:
--------------------------------------------------------------------------------
1 | import 'elements/index.dart' as elements;
2 | import 'components/index.dart' as components;
3 | import 'themes/index.dart' as themes;
4 |
5 | class WidgetDemoList {
6 | WidgetDemoList();
7 |
8 | List getDemos() {
9 | List result = [];
10 | result.addAll(elements.getWidgets());
11 | result.addAll(components.getWidgets());
12 | result.addAll(themes.getWidgets());
13 | return result;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoButton/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2019/1/20
4 | /// Time: 上午11:34
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: CupertinoButton 的示例
7 |
8 | import 'package:flutter/cupertino.dart';
9 | import 'package:flutter/material.dart';
10 |
11 | // Checkbox 默认按钮的实例
12 | // index 当前checkbox 的索引值
13 | class CupertinoButtonFullDefault extends StatefulWidget {
14 | const CupertinoButtonFullDefault() : super();
15 |
16 | @override
17 | State createState() => _CupertinoButtonFullDefault();
18 | }
19 |
20 | // CupertinoButton 默认的实例,有状态
21 | class _CupertinoButtonFullDefault extends State {
22 | @override
23 | Widget build(BuildContext context) {
24 | return CupertinoButton(
25 | borderRadius: BorderRadius.all(Radius.circular(15.0)),
26 | onPressed: () {
27 | print('on Pressed!');
28 | },
29 | pressedOpacity: 0.5, // 按下后的按钮不透明度
30 | color: CupertinoColors.inactiveGray,
31 | child: new Text('CupertinoButton'),
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoButton/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2019/1/20
4 | /// Time: 下午10:57
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: CupertinoButton 的示例
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_go/components/widget_demo.dart';
10 | import './demo.dart' as demoBox;
11 |
12 | const String content0 = '''
13 | ### **简介**
14 | > ios 风格的 button
15 | - 与普通的 button 一样,需要设置 text 或者 icon, 不同的是带有 fades out 效果;
16 | - 同时可以设置一个背景颜色;
17 | ''';
18 |
19 | const String content1 = '''
20 | ### **基本用法**
21 | > CupertinoButton 的一个是示例
22 | - 属性基本和 flatButton,raisedButton 类似
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/themes/Cupertino/CupertinoButton';
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | contentList: [content0, content1, demoBox.CupertinoButtonFullDefault()],
35 | title: 'CupertinoButton',
36 | docUrl:
37 | 'https://docs.flutter.io/flutter/cupertino/CupertinoButton-class.html',
38 | codeUrl: 'themes/Cupertino/CupertinoButton/demo.dart',
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoColors/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2019/1/20
4 | /// Time: 下午10:57
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: CupertinoColors 的示例
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import './demo.dart' as demoBox;
12 |
13 | const String content0 = '''
14 | ### **简介**
15 | > iOS平台常用的颜色
16 | ''';
17 |
18 | const String content1 = '''
19 | ### **基本用法**
20 | > CupertinoColors 的一个是示例
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/themes/Cupertino/CupertinoColors';
25 | _DemoState createState() => _DemoState();
26 | }
27 |
28 | class _DemoState extends State {
29 | @override
30 | Widget build(BuildContext context) {
31 | return WidgetDemo(
32 | contentList: [content0, content1, demoBox.CupertinoColorsFullDefault()],
33 | title: 'CupertinoColors',
34 | docUrl:
35 | 'https://docs.flutter.io/flutter/cupertino/CupertinoColors-class.html',
36 | codeUrl: 'themes/Cupertino/CupertinoColors/demo.dart',
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoIcons/index.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 一晟
3 | /// Date: 2019/1/20
4 | /// Time: 下午10:57
5 | /// email: zhu.yan@alibaba-inc.com
6 | /// target: CupertinoButton 的示例
7 |
8 | import 'package:flutter/material.dart';
9 |
10 | import 'package:flutter_go/components/widget_demo.dart';
11 | import './demo.dart' as demoBox;
12 |
13 | const String content0 = '''
14 | ### **简介**
15 | > Cupertino图标的标识符
16 | - 与Icon类一起使用以显示特定图标;
17 | - 请确保cupertino_icons在项目的pubspec.yaml文件中添加依赖项。这可确保CupertinoIcons字体包含在您的应用程序中;
18 | ''';
19 |
20 | const String content1 = '''
21 | ### **基本用法**
22 | > CupertinoIcons 的一个示例
23 | ''';
24 |
25 | class Demo extends StatefulWidget {
26 | static const String routeName = '/themes/Cupertino/CupertinoIcons';
27 | _DemoState createState() => _DemoState();
28 | }
29 |
30 | class _DemoState extends State {
31 | @override
32 | Widget build(BuildContext context) {
33 | return WidgetDemo(
34 | contentList: [content0, content1, demoBox.CupertinoIconsFullDefault()],
35 | title: 'CupertinoIcons',
36 | docUrl:
37 | 'https://docs.flutter.io/flutter/cupertino/CupertinoIcons-class.html',
38 | codeUrl: 'themes/Cupertino/CupertinoIcons/demo.dart');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoScrollbar/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'demo.dart';
5 |
6 | const Text0 = '''
7 | ### **简介**
8 | > CupertinoScrollbar 是ios样式风格的滚动条
9 |
10 | 为其可滚动的子元素,构建一个ios风格样式的滚动条
11 | ''';
12 |
13 | const String Text1 = """
14 | ### **基本用法**
15 | > 这里我们会用一个有CupertinoScrollbar和无CupertinoScrollbar的demo进行对比展示,
16 | 通过对比, 我们发现CupertinoScrollbar的子组件, 会有滚动的时候, 右侧会有一个滚动条.
17 | """;
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName =
21 | '/element/themes/Cupertino/CupertinoScrollbar';
22 |
23 | @override
24 | State createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | title: 'CupertinoScrollbar',
32 | codeUrl: 'themes/Cupertino/CupertinoScrollbar/demo.dart',
33 | docUrl:
34 | 'https://docs.flutter.io/flutter/material/MaterialAccentColor-class.html',
35 | contentList: [
36 | Text0,
37 | Text1,
38 | CupertinoScrollbarDemo(),
39 | NoCupertinoScrollbarDemo(),
40 | SizedBox(height: 100),
41 | ],
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class CupertinoSegmentedControlDemo extends StatefulWidget {
5 | _Demo createState() => _Demo();
6 | }
7 |
8 | class _Demo extends State {
9 | String value = 'a';
10 | @override
11 | Widget build(BuildContext context) {
12 | return CupertinoSegmentedControl(
13 | onValueChanged: (v) {
14 | this.setState(() {
15 | value = v;
16 | });
17 | },
18 | pressedColor: Color(0xff7c1c25),
19 | borderColor: Color(0xffac172a),
20 | selectedColor: Color(0xffac172a),
21 | groupValue: value,
22 | children: {
23 | 'a': Container(
24 | alignment: Alignment.center, width: 130.0, child: Text('a')),
25 | 'c': Text('C'),
26 | 'b': Text('B'),
27 | },
28 | );
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 15/01/2019
4 | /// Time: 22:23
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: xxx
7 |
8 | import 'package:flutter/cupertino.dart';
9 | import 'package:flutter/material.dart';
10 |
11 | class CupertinoSliderDemo extends StatefulWidget {
12 | _Demo createState() => _Demo();
13 | }
14 |
15 | class _Demo extends State {
16 | double value = 0.0;
17 | @override
18 | Widget build(BuildContext context) {
19 | return CupertinoSlider(
20 | value: value, //实际进度的位置
21 | min: 0.0,
22 | max: 100.0,
23 | divisions: 100,
24 | activeColor: Colors.blue, //进度中活动部分的颜色
25 | onChanged: (double) {
26 | setState(() {
27 | value = double.roundToDouble();
28 | });
29 | },
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSlider/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'demo.dart';
5 |
6 | const Text0 = '''
7 | ### **简介**
8 | > 用来选择范围性的数据
9 |
10 | CupertinoSlider 是ios风格的Slide组件,用来选择连续性的或者非连续性的数据. 默认是在一段最大值最小值间做任意值的选择. 如果你想选择间隔性的值, 例如0.0到50.0间,选择10, 15,...50.0这样的值, 给divisions设定一个非空的整数5,, 去分割区间范围.
11 |
12 | ### **基本用法**
13 |
14 | > 与 Slider 相同, 具体查看Slider组件
15 | ''';
16 |
17 | class Demo extends StatefulWidget {
18 | static const String routeName = '/element/themes/Cupertino/CupertinoSlider';
19 |
20 | @override
21 | State createState() => _DemoState();
22 | }
23 |
24 | class _DemoState extends State {
25 | @override
26 | Widget build(BuildContext context) {
27 | return WidgetDemo(
28 | title: 'CupertinoSlider',
29 | codeUrl: 'themes/Cupertino/CupertinoSlider/demo.dart',
30 | docUrl:
31 | 'https://docs.flutter.io/flutter/cupertino/CupertinoSlider-class.html',
32 | contentList: [
33 | Text0,
34 | CupertinoSliderDemo(),
35 | SizedBox(height: 100),
36 | ],
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'demo.dart';
5 |
6 | const Text0 = '''
7 | ### **简介**
8 | > ios-11风格下拥有一个较大标题块的导航栏目
9 |
10 | ### **基本用法**
11 |
12 | > 该组件使用时. 必须做为含有slivers属性的滚动列表的子组件中,例如CustomScrollView
13 | ''';
14 |
15 | class Demo extends StatefulWidget {
16 | static const String routeName =
17 | '/element/themes/Cupertino/CupertinoSliverNavigationBar';
18 |
19 | @override
20 | State createState() => _DemoState();
21 | }
22 |
23 | class _DemoState extends State {
24 | @override
25 | Widget build(BuildContext context) {
26 | return WidgetDemo(
27 | title: 'CupertinoSlider',
28 | codeUrl: 'themes/Cupertino/CupertinoSliverNavigationBar/demo.dart',
29 | docUrl:
30 | 'https://docs.flutter.io/flutter/cupertino/CupertinoSliverNavigationBar-class.html',
31 | contentList: [
32 | Text0,
33 | CupertinoSliverNavigationBarDemo(),
34 | SizedBox(height: 100),
35 | ],
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSwitch/demo.dart:
--------------------------------------------------------------------------------
1 | /// Created with Android Studio.
2 | /// User: 三帆
3 | /// Date: 15/01/2019
4 | /// Time: 22:23
5 | /// email: sanfan.hx@alibaba-inc.com
6 | /// target: CupertinoSwitchDemo
7 |
8 | import 'package:flutter/cupertino.dart';
9 | import 'package:flutter/material.dart';
10 |
11 | class CupertinoSwitchDemo extends StatefulWidget {
12 | _Demo createState() => _Demo();
13 | }
14 |
15 | class _Demo extends State {
16 | bool _lights = false;
17 | @override
18 | Widget build(BuildContext context) {
19 | return MergeSemantics(
20 | child: ListTile(
21 | title: Text('CupertinoSwitch'),
22 | trailing: CupertinoSwitch(
23 | activeColor: Colors.yellow,
24 | value: _lights,
25 | onChanged: (bool value) {
26 | setState(() {
27 | _lights = value;
28 | });
29 | },
30 | ),
31 | onTap: () {
32 | setState(() {
33 | _lights = !_lights;
34 | });
35 | },
36 | ),
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoSwitch/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 |
5 | import 'demo.dart';
6 |
7 | const Text0 = '''
8 | ### **简介**
9 | > ios风格下的Switch组件, 用法与Switch组件相同
10 |
11 | ### **基本用法**
12 |
13 | > 基本用法与Switch基本相同. 不同点在于, 该组件仅支持自定义activeColor, 也就是支持自定义当按钮处于true状态下,按钮的背景色.
14 | ''';
15 |
16 | class Demo extends StatefulWidget {
17 | static const String routeName = '/element/themes/Cupertino/CupertinoSwitch';
18 |
19 | @override
20 | State createState() => _DemoState();
21 | }
22 |
23 | class _DemoState extends State {
24 | @override
25 | Widget build(BuildContext context) {
26 | return WidgetDemo(
27 | title: 'CupertinoSlider',
28 | codeUrl: 'themes/Cupertino/CupertinoSwitch/demo.dart',
29 | docUrl:
30 | 'https://docs.flutter.io/flutter/cupertino/CupertinoSwitch-class.html',
31 | contentList: [Text0, CupertinoSwitchDemo()],
32 | );
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Cupertino/CupertinoTabBar/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 |
5 | import 'demo.dart';
6 |
7 | const Text0 = '''
8 | ### **简介**
9 | > ios风格下底部导航组件.
10 |
11 | 通过BottomNavigationBarItem列表,在屏幕底部展示多个小组件, 默认下选择第一个小组件;
12 |
13 | ### **基本用法**
14 |
15 | 这个组件, 没有任何内部状态, 使用时需要开发者自己去监听**onTap**方法, 主动为组件的属性**currentIndex**赋值
16 |
17 | 在官网上有这么一段文字:
18 |
19 | > If the given backgroundColor's opacity is not 1.0 (which is the case by default), it will produce a blurring effect to the content behind it.
20 |
21 | 本人试了很多次. 也没有发现这个Blur Effect是怎么触发的, 如果有人了解, 欢迎提PR.
22 | ''';
23 |
24 | class Demo extends StatefulWidget {
25 | static const String routeName = '/element/themes/Cupertino/CupertinoTabBar';
26 |
27 | @override
28 | State createState() => _DemoState();
29 | }
30 |
31 | class _DemoState extends State {
32 | @override
33 | Widget build(BuildContext context) {
34 | return WidgetDemo(
35 | title: 'CupertinoTabBar',
36 | codeUrl: 'themes/Cupertino/CupertinoTabBar/demo.dart',
37 | docUrl:
38 | 'https://docs.flutter.io/flutter/cupertino/CupertinoTabBar-class.html',
39 | contentList: [Text0, CupertinoTabBarDemo()],
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Material/MaterialAccentColor/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import 'package:flutter_go/widgets/themes/Material/MaterialColor/demo.dart';
5 |
6 | const Text0 = '''
7 | ### **简介**
8 | > 用来定义单一的强调色,以及四种色调的色系
9 | - 颜色的阴影用索引表示,索引较小的颜色比较浅,较大的索引比较暗。
10 | - 有个四个有效索引,100,200,400,和700.此颜色的值应与索引200和shade200的值相同。
11 | ''';
12 |
13 | const String Text1 = """
14 | ### **基本用法**
15 | > 这里我们配合Icon来进行演示
16 | - 颜色的值应与指数500和shade500的值相同
17 | """;
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName =
21 | '/element/themes/Material/MaterialAccentColor';
22 |
23 | @override
24 | State createState() => _DemoState();
25 | }
26 |
27 | class _DemoState extends State {
28 | @override
29 | Widget build(BuildContext context) {
30 | return WidgetDemo(
31 | title: 'MaterialAccentColor',
32 | codeUrl: 'themes/Material/MaterialColor/demo.dart',
33 | docUrl:
34 | 'https://docs.flutter.io/flutter/material/MaterialAccentColor-class.html',
35 | contentList: [
36 | Text0,
37 | Text1,
38 | ColorDemo(),
39 | ],
40 | );
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Material/MaterialApp/demo.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-27 16:25:25
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-27 16:25:25
5 |
6 | // !!! 代码示例,并非Demo
7 | // import 'package:flutter/material.dart';
8 | // class MaterialApp extends StatelessWidget {
9 | // @override
10 | // Widget build(BuildContext context) {
11 | // return MaterialApp(
12 | // title: 'title',
13 | // theme: ThemeData(
14 | // primaryColor: Color(ThemeColor),
15 | // backgroundColor: Color(0xFFEFEFEF),
16 | // accentColor: Color(0xFF888888),
17 | // textTheme: TextTheme(
18 | // //设置Material的默认字体样式
19 | // body1: TextStyle(color: Color(0xFF888888), fontSize: 16.0),
20 | // ),
21 | // iconTheme: IconThemeData(
22 | // color: Color(ThemeColor),
23 | // size: 35.0,
24 | // ),
25 | // ),
26 | // home: MyHomePage(),
27 | // onGenerateRoute: Application.router.generator,
28 | // );
29 | // }
30 | // }
31 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Material/MaterialColor/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: 一凨
2 | /// @Date: 2018-12-27 16:25:22
3 | /// @Last Modified by: 一凨
4 | /// @Last Modified time: 2018-12-27 16:35:39
5 |
6 | import 'package:flutter/material.dart';
7 |
8 | import 'package:flutter_go/components/widget_demo.dart';
9 | import './demo.dart';
10 |
11 | const String content0 = '''
12 | ### **简介**
13 | > 定义单色以及具有十种色调的色样
14 | - 颜色的阴影由索引引用。指数越大,颜色越深。总共有十个有效指数:50、100、200、...、900.
15 | ''';
16 |
17 | const String content1 = '''
18 | ### **基础用法**
19 | > 这里我们配合Icon来进行演示
20 | - 颜色的值应与指数500和shade500的值相同
21 | ''';
22 |
23 | class Demo extends StatefulWidget {
24 | static const String routeName = '/Themes/Material/MaterialColor';
25 |
26 | _DemoState createState() => _DemoState();
27 | }
28 |
29 | class _DemoState extends State {
30 | @override
31 | Widget build(BuildContext context) {
32 | return WidgetDemo(
33 | contentList: [
34 | content0,
35 | content1,
36 | ColorDemo(),
37 | ],
38 | title: "MaterialColor",
39 | codeUrl: 'themes/Material/MaterialColor/demo.dart',
40 | docUrl:
41 | 'https://docs.flutter.io/flutter/material/MaterialColor-class.html',
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/widgets/themes/Material/MaterialPageRoute/index.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | import 'package:flutter_go/components/widget_demo.dart';
4 | import './demo.dart';
5 |
6 | const Text0 = '''
7 | ### **简介**
8 | > 页面跳转携带参数替换整个屏幕的页面路由。
9 | - 对于Android,页面的进入以下方滑动向上,页面退出,以上方滑动向下方。在ios上,页面进度从右边滑入,退出相反。
10 | - 默认情况下,当路由器被另外一个替换时,前一个路由将被保留在内存中,如果希望在不需要的时候能够释放资源,请将maintainState设置为false
11 | ''';
12 |
13 | const String Text1 = """
14 | ### **基本用法**
15 | > 如下图示例:
16 |
17 | """;
18 |
19 | class Demo extends StatefulWidget {
20 | static const String routeName = '/element/themes/Material/MaterialPageRoute';
21 |
22 | @override
23 | State createState() => _DemoState();
24 | }
25 |
26 | class _DemoState extends State {
27 | @override
28 | Widget build(BuildContext context) {
29 | return WidgetDemo(
30 | title: 'MaterialPageRoute',
31 | codeUrl: 'themes/Material/MaterialPageRoute/demo.dart',
32 | docUrl:
33 | 'https://docs.flutter.io/flutter/material/MaterialPageRoute-class.html',
34 | contentList: [
35 | Text0,
36 | Text1,
37 | FirstPage(),
38 | ],
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/widgets/themes/index.dart:
--------------------------------------------------------------------------------
1 | /// @Author: xiaojia.dxj
2 | /// @Date: 2018-12-24 16:31:09
3 | /// @Last Modified by: xiaojia.dxj
4 | /// @Last Modified time: 2018-12-24 16:31:09
5 |
6 | import './Material/index.dart' as Material;
7 | import './Cupertino/index.dart' as Cupertino;
8 |
9 | List getWidgets() {
10 | List result = [];
11 | result.addAll(Material.widgetPoints);
12 | result.addAll(Cupertino.widgetPoints);
13 | return result;
14 | }
15 |
--------------------------------------------------------------------------------
/mupp_build_env_init.sh:
--------------------------------------------------------------------------------
1 | #! /bin/bash
2 | print 'entitlement config'
3 | cd ios
4 | ruby entitlement_config.rb
5 | cd ..
6 | #屏蔽Build Shell
7 | sed -i "" "s/\/bin\/sh \\\\\"\\\$FLUTTER_ROOT/#\/bin\/sh \\\\\"\\\$FLUTTER_ROOT/" ./ios/Runner.xcodeproj/project.pbxproj
8 | #拷贝已生成好的Dart代码中间产物
9 | mtl_dir="ios/Flutter_MTL/Flutter"
10 | flutter_dir="ios/Flutter"
11 | [ -d ${flutter_dir} ] || mkdir ${flutter_dir}
12 | rm -rf ${flutter_dir}/*
13 | cp -r ${mtl_dir}/ ${flutter_dir}/
14 | sizeStr=`wc -c ${flutter_dir}/Flutter.framework/Flutter`
15 | lipoStr=`lipo -info ${flutter_dir}/Flutter.framework/Flutter`
16 | echo "[KWLM]Flutter.framework size:${sizeStr}${lipoStr}"
17 | cat ./ios/Runner.xcodeproj/project.pbxproj
18 |
--------------------------------------------------------------------------------
/recruit:
--------------------------------------------------------------------------------
1 |
2 | ---
3 |
4 | ## 加个广告:团队招聘
5 |
6 | ### 🔥《阿里巴巴集团春季校园招聘》已经启动。
7 |
8 | - 团队获取此消息后第一时间,赶紧通知,各位刚走出校园的千里马,走进阿里的机会来了!!!
9 |
10 | 基本要求如下:
11 |
12 | - 招收 2019年11月-2020年10月 毕业的同学
13 | - 本次校招行动共执行四周,到 4月12日结束
14 |
15 | #### 🔔强调一下这次是校招哦!!!如果你有意向,又符合 2019年11月-2020年10月 的应届毕业生条件;
16 |
17 | - 不符合,也没关系,可以推荐优秀的学弟,学妹;增进一下“纯洁”的同学感情 👫😎。
18 |
19 | #### 请移步往下,关注我们《阿里拍卖团队》 的招聘信息。
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 | #### 最重要的部分来了,手机扫描下面二维码,即可进入简历投递系统
28 |
29 |
30 |
--------------------------------------------------------------------------------
/test/imp.dart:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/test/imp.dart
--------------------------------------------------------------------------------
/test/imp2.dart:
--------------------------------------------------------------------------------
1 | var router = [12,13,14];
2 |
--------------------------------------------------------------------------------
/test/test.dart:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alibaba/flutter-go/a41b2124278e9f17d222ec1cea2ace3042be03f7/test/test.dart
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | // To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter
3 | // provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to
4 | // find child widgets in the widget tree, read text, and verify that the values of widget properties
5 | // are correct.
6 |
7 | import 'package:flutter/material.dart';
8 | import 'package:flutter_test/flutter_test.dart';
9 |
10 | import 'package:flutter_go/main.dart';
11 |
12 | void main() {
13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
14 | // Build our app and trigger a frame.
15 | await tester.pumpWidget(new MyApp());
16 |
17 | // Verify that our counter starts at 0.
18 | expect(find.text('0'), findsOneWidget);
19 | expect(find.text('1'), findsNothing);
20 |
21 | // Tap the '+' icon and trigger a frame.
22 | await tester.tap(find.byIcon(Icons.add));
23 | await tester.pump();
24 |
25 | // Verify that our counter has incremented.
26 | expect(find.text('0'), findsNothing);
27 | expect(find.text('1'), findsOneWidget);
28 | });
29 | }
30 |
--------------------------------------------------------------------------------
/tools/getPR.sh:
--------------------------------------------------------------------------------
1 |
2 | #!/bin/bash
3 |
4 | # pr 日志生成器,自动 pr 工具抓取器,抓取两周前至今的,提交数据,并去重。
5 | # 生成一个 http 页面,打印成 markdown 格式
6 | # run $ bash tools/getPR.sh
7 |
8 | # git log --pretty="%h - %s - %ad" --author=ryan --since=2.weeks --no-merges > tools/log.txt
9 |
10 | logs=`git log --date=iso --since=2.weeks --no-merges --pretty=format:'{"commit": "-%h","author": "%aN <%aE>","date": "%ad","message": "%s"},'`
11 |
12 | log1=${logs}
13 |
14 | # echo ${log1%*,}
15 |
16 | echo '{"pr_req":['${log1%*,}']}' > tools/log.json
17 |
18 | node ./tools/parsLog.js
--------------------------------------------------------------------------------