diff --git a/README-en.md b/README-en.md index 8e866ea3..66ca4afb 100644 --- a/README-en.md +++ b/README-en.md @@ -16,7 +16,7 @@ No This Project need latest package, please update regularly. - dart(version: 2.0.0) -- flutter(version: v1.1.10) +- flutter(version: v1.0.0) ### Background diff --git a/README.md b/README.md index 56f19e8d..dcec36c3 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ iphone下载地址: 本项目环境持续更新. 请定期更新各依赖包. - dart(version: 2.0.0) -- flutter(version: v1.1.10) +- flutter(version: v1.0.0) ### 背景 diff --git a/android/app/src/main/java/com/example/flutterrookiebook/MainActivity.java b/android/app/src/main/java/com/example/flutterrookiebook/MainActivity.java index 4a0f9099..6b250c0d 100644 --- a/android/app/src/main/java/com/example/flutterrookiebook/MainActivity.java +++ b/android/app/src/main/java/com/example/flutterrookiebook/MainActivity.java @@ -8,6 +8,8 @@ public class MainActivity extends FlutterActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + +// setContentView(R.layout.activity_main); GeneratedPluginRegistrant.registerWith(this); } } diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 304732f8..0b083227 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -4,9 +4,9 @@ - + android:src="@mipmap/splash" /> + diff --git a/android/app/src/main/res/drawable/splash.png b/android/app/src/main/res/drawable/splash.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/android/app/src/main/res/drawable/splash.png differ diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..02a96f05 --- /dev/null +++ b/android/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-xhdpi/splash.png b/android/app/src/main/res/mipmap-xhdpi/splash.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/splash.png differ diff --git a/assets/images/painterImg.jpeg b/assets/images/painterImg.jpeg new file mode 100644 index 00000000..b602c1b4 Binary files /dev/null and b/assets/images/painterImg.jpeg differ diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 4f77e0fd..f9a14f30 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 084A20882202E4FD00428FF5 /* flutter go.png in Resources */ = {isa = PBXBuildFile; fileRef = 084A20872202E4FD00428FF5 /* flutter go.png */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 333E5DAE7FC10AC69FEC26C0 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DDA792F029EDD7A11295D192 /* libPods-Runner.a */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; @@ -37,6 +38,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 084A20872202E4FD00428FF5 /* flutter go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "flutter go.png"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; @@ -101,6 +103,7 @@ 97C146E51CF9000F007C117D = { isa = PBXGroup; children = ( + 084A20872202E4FD00428FF5 /* flutter go.png */, 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, @@ -206,6 +209,7 @@ files = ( 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 084A20882202E4FD00428FF5 /* flutter go.png in Resources */, 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, ); @@ -445,7 +449,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -469,7 +473,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m index 59a72e90..7feb3d13 100644 --- a/ios/Runner/AppDelegate.m +++ b/ios/Runner/AppDelegate.m @@ -7,6 +7,7 @@ didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GeneratedPluginRegistrant registerWithRegistry:self]; // Override point for customization after application launch. + [NSThread sleepForTimeInterval:2]; return [super application:application didFinishLaunchingWithOptions:launchOptions]; } diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json index 0bedcf2f..37c7268f 100644 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -2,17 +2,17 @@ "images" : [ { "idiom" : "universal", - "filename" : "LaunchImage.png", + "filename" : "flutter go.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "LaunchImage@2x.png", + "filename" : "flutter go-1.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "LaunchImage@3x.png", + "filename" : "flutter go-2.png", "scale" : "3x" } ], @@ -20,4 +20,4 @@ "version" : 1, "author" : "xcode" } -} +} \ No newline at end of file diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eac..00000000 Binary files a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-1.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-2.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-2.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go-2.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/flutter go.png differ diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard index f2e259c7..bb646759 100644 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -1,8 +1,12 @@ - - + + + + + - + + @@ -14,24 +18,36 @@ + - + + + + + + + + + + + + - + - + diff --git a/ios/flutter go.png b/ios/flutter go.png new file mode 100644 index 00000000..d42caece Binary files /dev/null and b/ios/flutter go.png differ diff --git a/lib/components/disclaimer_msg.dart b/lib/components/disclaimer_msg.dart index 0f191058..b690c291 100644 --- a/lib/components/disclaimer_msg.dart +++ b/lib/components/disclaimer_msg.dart @@ -33,11 +33,13 @@ class DisclaimerMsgState extends State { void refs(bool value) async { final SharedPreferences prefs = await _prefs; final bool unKnow = value; - setState(() { - _unKnow = prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) { - return unKnow; + if (mounted) { + setState(() { + _unKnow = prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) { + return unKnow; + }); }); - }); + } } @override @@ -135,12 +137,12 @@ class DisclaimerMsgState extends State { tristate: false, value: _valBool, onChanged: (bool bol) { - setState(() { - _valBool = bol; - }); -// refs(bol); - Navigator.of(context) - .pop(); // here I pop to avoid multiple Dialogs + if(mounted) { + setState(() { + _valBool = bol; + }); + } + Navigator.of(context).pop(); // here I pop to avoid multiple Dialogs showAlertDialog(context); //here i call the same function }), Text('不再自动提示', style: TextStyle(fontSize: 14)), diff --git a/lib/components/full_screen_code_dialog.dart b/lib/components/full_screen_code_dialog.dart index 7f249eed..74bf89ec 100644 --- a/lib/components/full_screen_code_dialog.dart +++ b/lib/components/full_screen_code_dialog.dart @@ -20,6 +20,7 @@ class _FullScreenCodeDialogState extends State { @override void didChangeDependencies() { + print('widget.filePath=======${widget.filePath}'); getExampleCode(context,'${widget.filePath}', DefaultAssetBundle.of(context)) .then((String code) { if (mounted) { diff --git a/lib/components/list_refresh.dart b/lib/components/list_refresh.dart index 0a7dd455..2c999a85 100644 --- a/lib/components/list_refresh.dart +++ b/lib/components/list_refresh.dart @@ -61,7 +61,9 @@ class _ListRefreshState extends State { Future _getMoreData() async { if (!isLoading && _hasMore) { // 如果上一次异步请求数据完成 同时有数据可以加载 - setState(() => isLoading = true); + if (mounted) { + setState(() => isLoading = true); + } //if(_hasMore){ // 还有数据可以拉新 List newEntries = await mokeHttpRequest(); //if (newEntries.isEmpty) { diff --git a/lib/main.dart b/lib/main.dart index 3eee4c35..dfc33e73 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,20 +4,31 @@ import 'package:flutter/rendering.dart'; import 'routers/routers.dart'; import 'routers/application.dart'; import 'package:flutter_go/utils/provider.dart'; - +import 'package:flutter_go/utils/shared_preferences.dart'; +import 'package:flutter_go/views/first_page/home.dart'; import 'views/welcome_page/index.dart'; const int ThemeColor = 0xFFC91B3A; +SpUtil sp; +var db; class MyApp extends StatelessWidget { - MyApp() { + MyApp() { final router = new Router(); Routes.configureRoutes(router); Application.router = router; } - + showWelcomePage() { + bool showWelcome = sp.getBool(sharedPreferencesKeys.showWelcome); + if (showWelcome == null || showWelcome == true) { + return WelcomePage(); + } else { + return AppPage(); + } + } @override Widget build(BuildContext context) { + showWelcomePage(); return new MaterialApp( title: 'title', theme: new ThemeData( @@ -34,18 +45,18 @@ class MyApp extends StatelessWidget { ), ), home: new Scaffold( - body: new WelcomePage(), + body: showWelcomePage() ), onGenerateRoute: Application.router.generator, ); } } -var db; void main() async { final provider = new Provider(); await provider.init(true); + sp = await SpUtil.getInstance(); db = Provider.db; runApp(new MyApp()); } diff --git a/lib/resources/shared_preferences_keys.dart b/lib/resources/shared_preferences_keys.dart new file mode 100644 index 00000000..92c53031 --- /dev/null +++ b/lib/resources/shared_preferences_keys.dart @@ -0,0 +1,30 @@ +/** + * Created with Android Studio. + * User: 三帆 + * Date: 31/01/2019 + * Time: 18:13 + * email: sanfan.hx@alibaba-inc.com + * tartget: xxx + */ + +//enum DateType { +// Int, +// Double, +// Bool, +// String, +// Dynamic +//} + +//class spKey { +// String name; +// DateType type; +// +// spKey({this.name, this.type}); +//} + +class sharedPreferencesKeys { + /// boolean + /// 用于欢迎页面. 只有第一次访问才会显示. 或者手动将这个值设为false + static String showWelcome = 'loginWelcone'; +} + diff --git a/lib/resources/widget_name_to_icon.dart b/lib/resources/widget_name_to_icon.dart index 95dff598..644d145d 100644 --- a/lib/resources/widget_name_to_icon.dart +++ b/lib/resources/widget_name_to_icon.dart @@ -78,6 +78,9 @@ class WidgetName2Icon { "IconData":Icons.date_range, "IconThemeData":Icons.insert_comment, "Canvas":Icons.edit, + "PainterPath":Icons.gesture, + "CircleProgressBarPainter":Icons.av_timer, + "PainterSketch":Icons.touch_app, "Material":Icons.android, "MaterialApp":Icons.android, "MaterialButton":Icons.speaker, diff --git a/lib/routers/application.dart b/lib/routers/application.dart index 35587d4d..64a25786 100644 --- a/lib/routers/application.dart +++ b/lib/routers/application.dart @@ -1,8 +1,11 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_go/utils/shared_preferences.dart'; class Application { static Router router; static TabController controller; + static SpUtil sharePeferences; + static Map github = { 'widgetsURL':'https://github.com/alibaba/flutter-go/blob/develop/lib/widgets/', //'develop':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/develop/lib/widgets/', diff --git a/lib/utils/provider.dart b/lib/utils/provider.dart index 35a354c7..643addfa 100644 --- a/lib/utils/provider.dart +++ b/lib/utils/provider.dart @@ -59,6 +59,7 @@ class Provider { //Get a location using getDatabasesPath String databasesPath = await getDatabasesPath(); String path = join(databasesPath, 'flutter.db'); + print(path); try { db = await openDatabase(path); } catch (e) { diff --git a/lib/utils/shared_preferences.dart b/lib/utils/shared_preferences.dart new file mode 100644 index 00000000..9dee93d4 --- /dev/null +++ b/lib/utils/shared_preferences.dart @@ -0,0 +1,119 @@ + +import 'dart:async'; +import 'package:shared_preferences/shared_preferences.dart'; +export 'package:flutter_go/resources/shared_preferences_keys.dart'; +/// +/// 用来做shared_preferences的存储 +class SpUtil { + static SpUtil _instance; + static Future get instance async { + return await getInstance(); + } + + static SharedPreferences _spf; + + + SpUtil._(); + + Future _init() async { + _spf = await SharedPreferences.getInstance(); + } + + static Future getInstance() async { + print("_instance>>$_instance"); + if (_instance == null) { + _instance = new SpUtil._(); + await _instance._init(); + + } + return _instance; + } + + static bool _beforCheck() { + if (_spf == null) { + return true; + } + return false; + } + // 判断是否存在数据 + bool hasKey(String key) { + Set keys = getKeys(); + return keys.contains(key); + } + + Set getKeys() { + if (_beforCheck()) return null; + return _spf.getKeys(); + } + + get(String key) { + if (_beforCheck()) return null; + return _spf.get(key); + } + + getString(String key) { + if (_beforCheck()) return null; + return _spf.getString(key); + } + + Future putString(String key, String value) { + if (_beforCheck()) return null; + return _spf.setString(key, value); + } + + bool getBool(String key) { + if (_beforCheck()) return null; + return _spf.getBool(key); + } + + Future putBool(String key, bool value) { + if (_beforCheck()) return null; + return _spf.setBool(key, value); + } + + int getInt(String key) { + if (_beforCheck()) return null; + return _spf.getInt(key); + } + + Future putInt(String key, int value) { + if (_beforCheck()) return null; + return _spf.setInt(key, value); + } + + double getDouble(String key) { + if (_beforCheck()) return null; + return _spf.getDouble(key); + } + + Future putDouble(String key, double value) { + if (_beforCheck()) return null; + return _spf.setDouble(key, value); + } + + List getStringList(String key) { + return _spf.getStringList(key); + } + + Future putStringList(String key, List value) { + if (_beforCheck()) return null; + return _spf.setStringList(key, value); + } + + dynamic getDynamic(String key) { + if (_beforCheck()) return null; + return _spf.get(key); + } + + + + Future remove(String key) { + if (_beforCheck()) return null; + return _spf.remove(key); + } + + Future clear() { + if (_beforCheck()) return null; + return _spf.clear(); + } +} \ No newline at end of file diff --git a/lib/views/first_page/first_page.dart b/lib/views/first_page/first_page.dart index a7f8feb8..87847280 100644 --- a/lib/views/first_page/first_page.dart +++ b/lib/views/first_page/first_page.dart @@ -17,7 +17,7 @@ class FirstPage extends StatefulWidget { } class FirstPageState extends State with AutomaticKeepAliveClientMixin{ - Future _prefs=SharedPreferences.getInstance(); + Future _prefs = SharedPreferences.getInstance(); Future _unKnow; @override diff --git a/lib/views/fourth_page/pages.dart b/lib/views/fourth_page/pages.dart index dbc01b02..e9efb923 100644 --- a/lib/views/fourth_page/pages.dart +++ b/lib/views/fourth_page/pages.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../../routers/application.dart'; import '../../routers/routers.dart'; +import '../../utils/shared_preferences.dart'; final pages = [ new PageViewModel( @@ -30,7 +31,7 @@ final pages = [ class Page extends StatelessWidget { final PageViewModel viewModel; final double percentVisible; - + SpUtil sp; Page({ this.viewModel, this.percentVisible = 1.0, @@ -43,8 +44,10 @@ class Page extends StatelessWidget { Widget creatButton( BuildContext context, String txt, IconData iconName, String type) { return RaisedButton.icon( - onPressed: () { + onPressed: () async { if (type == 'start') { + await SpUtil.getInstance() + ..putBool(sharedPreferencesKeys.showWelcome, false); _goHomePage(context); } else if (type == 'goGithub') { Application.router.navigateTo(context, diff --git a/lib/views/welcome_page/fourth_page.dart b/lib/views/welcome_page/fourth_page.dart index 26ec7df1..536885f8 100644 --- a/lib/views/welcome_page/fourth_page.dart +++ b/lib/views/welcome_page/fourth_page.dart @@ -24,52 +24,54 @@ class FourthPageState extends State with TickerProviderStateMixin { slideUpdateStream = new StreamController(); slideUpdateStream.stream.listen((SlideUpdate event) { - setState(() { - if (event.updateType == UpdateType.dragging) { - slideDirection = event.direction; - slidePercent = event.slidePercent; + if(mounted) { + setState(() { + if (event.updateType == UpdateType.dragging) { + slideDirection = event.direction; + slidePercent = event.slidePercent; - if (slideDirection == SlideDirection.leftToRight) { - nextPageIndex = activeIndex - 1; - } else if (slideDirection == SlideDirection.rightToLeft) { - nextPageIndex = activeIndex + 1; - } else { - nextPageIndex = activeIndex; + if (slideDirection == SlideDirection.leftToRight) { + nextPageIndex = activeIndex - 1; + } else if (slideDirection == SlideDirection.rightToLeft) { + nextPageIndex = activeIndex + 1; + } else { + nextPageIndex = activeIndex; + } + } else if (event.updateType == UpdateType.doneDragging) { + if (slidePercent > 0.5) { + animatedPageDragger = new AnimatedPageDragger( + slideDirection: slideDirection, + transitionGoal: TransitionGoal.open, + slidePercent: slidePercent, + slideUpdateStream: slideUpdateStream, + vsync: this, + ); + } else { + animatedPageDragger = new AnimatedPageDragger( + slideDirection: slideDirection, + transitionGoal: TransitionGoal.close, + slidePercent: slidePercent, + slideUpdateStream: slideUpdateStream, + vsync: this, + ); + + nextPageIndex = activeIndex; + } + + animatedPageDragger.run(); + } else if (event.updateType == UpdateType.animating) { + slideDirection = event.direction; + slidePercent = event.slidePercent; + } else if (event.updateType == UpdateType.doneAnimating) { + activeIndex = nextPageIndex; + + slideDirection = SlideDirection.none; + slidePercent = 0.0; + + animatedPageDragger.dispose(); } - } else if (event.updateType == UpdateType.doneDragging) { - if (slidePercent > 0.5) { - animatedPageDragger = new AnimatedPageDragger( - slideDirection: slideDirection, - transitionGoal: TransitionGoal.open, - slidePercent: slidePercent, - slideUpdateStream: slideUpdateStream, - vsync: this, - ); - } else { - animatedPageDragger = new AnimatedPageDragger( - slideDirection: slideDirection, - transitionGoal: TransitionGoal.close, - slidePercent: slidePercent, - slideUpdateStream: slideUpdateStream, - vsync: this, - ); - - nextPageIndex = activeIndex; - } - - animatedPageDragger.run(); - } else if (event.updateType == UpdateType.animating) { - slideDirection = event.direction; - slidePercent = event.slidePercent; - } else if (event.updateType == UpdateType.doneAnimating) { - activeIndex = nextPageIndex; - - slideDirection = SlideDirection.none; - slidePercent = 0.0; - - animatedPageDragger.dispose(); - } - }); + }); + } }); } diff --git a/lib/widgets/404.dart b/lib/widgets/404.dart index 1ca56170..156b043e 100644 --- a/lib/widgets/404.dart +++ b/lib/widgets/404.dart @@ -9,7 +9,7 @@ class WidgetNotFound extends StatelessWidget { title: Text("widget not found"), ), body: Container( - child: new Text("widget not found") + child: Text("widget not found") ) ); } diff --git a/lib/widgets/components/Bar/AppBar/demo.dart b/lib/widgets/components/Bar/AppBar/demo.dart index c17eb6e0..3a21d086 100644 --- a/lib/widgets/components/Bar/AppBar/demo.dart +++ b/lib/widgets/components/Bar/AppBar/demo.dart @@ -30,8 +30,8 @@ class _AppBarLessDefaultComplex extends State with SingleTickerProviderStateMixi @override void initState() { super.initState(); - _scrollViewController = new ScrollController(); - _tabController = new TabController(vsync: this, length: 6);// 和下面的 TabBar.tabs 数量对应 + _scrollViewController = ScrollController(); + _tabController = TabController(vsync: this, length: 6);// 和下面的 TabBar.tabs 数量对应 } @override @@ -46,26 +46,26 @@ class _AppBarLessDefaultComplex extends State with SingleTickerProviderStateMixi // 如果省略了 leading ,但 AppBar 在带有 Drawer 的 Scaffold 中,则会插入一个 button 以打开 Drawer。 // 否则,如果最近的 Navigator 具有任何先前的 router ,则会插入BackButton。 // 这种行为可以通过设置来关闭automaticallyImplyLeading 为false。在这种情况下,空的 leading widget 将导致 middle/title widget 拉伸开始。 - return new SizedBox( + return SizedBox( height: 500, - child:new AppBar( // 大量配置属性参考 SliverAppBar 示例 - title: new Text('title'), - leading: new Icon(Icons.home), + child: AppBar( // 大量配置属性参考 SliverAppBar 示例 + title: Text('title'), + leading: Icon(Icons.home), backgroundColor: Colors.amber[500], centerTitle: true, actions: [ - new IconButton( - icon: new Icon(Icons.add_alarm), + IconButton( + icon: Icon(Icons.add_alarm), tooltip: 'Add Alarm', onPressed: () { // do nothing }), - new PopupMenuButton( + PopupMenuButton( itemBuilder: (BuildContext context) => >[ - new PopupMenuItem( - value: "price", child: new Text('Sort by price')), - new PopupMenuItem( - value: "time", child: new Text('Sort by time')), + PopupMenuItem( + value: "price", child: Text('Sort by price')), + PopupMenuItem( + value: "time", child: Text('Sort by time')), ], onSelected: (String action) { switch (action) { @@ -78,16 +78,16 @@ class _AppBarLessDefaultComplex extends State with SingleTickerProviderStateMixi } }) ], - bottom: new TabBar( + bottom: TabBar( isScrollable: true, controller: _tabController, tabs: [ - new Tab(text: "Tabs 1"), - new Tab(text: "Tabs 2"), - new Tab(text: "Tabs 3"), - new Tab(text: "Tabs 4"), - new Tab(text: "Tabs 5"), - new Tab(text: "Tabs 6"), + Tab(text: "Tabs 1"), + Tab(text: "Tabs 2"), + Tab(text: "Tabs 3"), + Tab(text: "Tabs 4"), + Tab(text: "Tabs 5"), + Tab(text: "Tabs 6"), ], ), ), @@ -107,7 +107,7 @@ class AppBarLessDefaultSimple extends StatelessWidget { @override Widget build(BuildContext context) { - return new SizedBox( + return SizedBox( height: 200, child:AppBar( title: Text('My Fancy Dress'), diff --git a/lib/widgets/components/Bar/AppBar/index.dart b/lib/widgets/components/Bar/AppBar/index.dart index 82bdf8c1..0816bc41 100644 --- a/lib/widgets/components/Bar/AppBar/index.dart +++ b/lib/widgets/components/Bar/AppBar/index.dart @@ -62,7 +62,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -84,7 +84,7 @@ Widget allDomes(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/Bar/BottomAppBar/demo.dart b/lib/widgets/components/Bar/BottomAppBar/demo.dart index cea79ea4..e5bf902f 100644 --- a/lib/widgets/components/Bar/BottomAppBar/demo.dart +++ b/lib/widgets/components/Bar/BottomAppBar/demo.dart @@ -21,7 +21,7 @@ class AppBarLessDefaultSimple extends StatelessWidget { @override Widget build(BuildContext context) { - return new SizedBox( + return SizedBox( height: 100, child: Scaffold( //appBar: AppBar(title: const Text('Bottom App Bar')), diff --git a/lib/widgets/components/Bar/BottomAppBar/index.dart b/lib/widgets/components/Bar/BottomAppBar/index.dart index 080c278e..5a121b73 100644 --- a/lib/widgets/components/Bar/BottomAppBar/index.dart +++ b/lib/widgets/components/Bar/BottomAppBar/index.dart @@ -52,7 +52,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/Bar/ButtonBar/demo.dart b/lib/widgets/components/Bar/ButtonBar/demo.dart index 0ce89f0b..6ffb3d2d 100644 --- a/lib/widgets/components/Bar/ButtonBar/demo.dart +++ b/lib/widgets/components/Bar/ButtonBar/demo.dart @@ -44,9 +44,9 @@ class ButtonBarLessDefault extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - margin: new EdgeInsets.symmetric(vertical: 0.0), + margin: EdgeInsets.symmetric(vertical: 0.0), height: 100.0, - child: new Scrollbar(child:ListView( + child: Scrollbar(child:ListView( scrollDirection: Axis.horizontal, // 水平listView children: [ ButtonBar( diff --git a/lib/widgets/components/Bar/ButtonBar/index.dart b/lib/widgets/components/Bar/ButtonBar/index.dart index 8c9de1ff..f5fc37fb 100644 --- a/lib/widgets/components/Bar/ButtonBar/index.dart +++ b/lib/widgets/components/Bar/ButtonBar/index.dart @@ -55,7 +55,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/Bar/FlexibleSpaceBar/index.dart b/lib/widgets/components/Bar/FlexibleSpaceBar/index.dart index 80f27150..0d3b7c77 100644 --- a/lib/widgets/components/Bar/FlexibleSpaceBar/index.dart +++ b/lib/widgets/components/Bar/FlexibleSpaceBar/index.dart @@ -54,7 +54,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/Bar/SliverAppBar/demo.dart b/lib/widgets/components/Bar/SliverAppBar/demo.dart index 705f0dbe..058a25aa 100644 --- a/lib/widgets/components/Bar/SliverAppBar/demo.dart +++ b/lib/widgets/components/Bar/SliverAppBar/demo.dart @@ -44,9 +44,9 @@ class SliverAppBarLessDefault extends StatelessWidget { @override Widget build(BuildContext context) { for (int i = 0; i < 20; i++) { - listData.add(new ListItem("我是测试标题$i", Icons.cake)); + listData.add( ListItem("我是测试标题$i", Icons.cake)); } - return new SizedBox( + return SizedBox( height: 500.0, child: NestedScrollView( headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { @@ -89,7 +89,7 @@ class SliverAppBarLessDefault extends StatelessWidget { // SliverPersistentHeader( // delegate: _SliverAppBarDelegate( // TabBar( - // controller: new TabController(length: 2, vsync: this), + // controller: TabController(length: 2, vsync: this), // labelColor: Colors.black87, // unselectedLabelColor: Colors.grey, // tabs: [ @@ -101,10 +101,10 @@ class SliverAppBarLessDefault extends StatelessWidget { ]; }, body: Center( - child: new ListView.builder( + child: ListView.builder( shrinkWrap: true, itemBuilder: (BuildContext context, int index) { - return new ListItemWidget(listData[index]); + return ListItemWidget(listData[index]); }, itemCount: listData.length, ), @@ -127,10 +127,10 @@ class ListItemWidget extends StatelessWidget { @override Widget build(BuildContext context) { - return new InkWell( - child: new ListTile( - leading: new Icon(listItem.iconData), - title: new Text(listItem.title), + return InkWell( + child: ListTile( + leading: Icon(listItem.iconData), + title: Text(listItem.title), ), onTap: () {}, ); diff --git a/lib/widgets/components/Bar/SliverAppBar/index.dart b/lib/widgets/components/Bar/SliverAppBar/index.dart index 742f6894..92490640 100644 --- a/lib/widgets/components/Bar/SliverAppBar/index.dart +++ b/lib/widgets/components/Bar/SliverAppBar/index.dart @@ -54,7 +54,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -71,7 +71,7 @@ Widget allDomes(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/Bar/SnackBar/demo.dart b/lib/widgets/components/Bar/SnackBar/demo.dart index d4413982..5ba66467 100644 --- a/lib/widgets/components/Bar/SnackBar/demo.dart +++ b/lib/widgets/components/Bar/SnackBar/demo.dart @@ -23,15 +23,15 @@ class SnackBarLessDefault extends StatelessWidget { @override Widget build(BuildContext context) { // 当BuildContext在Scaffold之前时,调用Scaffold.of(context)会报错。这时可以通过Builder Widget来解决 - return new Center( - child: new Column( + return Center( + child: Column( children: [ - new GestureDetector( + GestureDetector( onTap: () { - final snackBar = new SnackBar( - content: new Text('这是一个SnackBar, 右侧有SnackBarAction'), + final snackBar = SnackBar( + content: Text('这是一个SnackBar, 右侧有SnackBarAction'), backgroundColor:Colors.red, - action: new SnackBarAction( // 提示信息上添加一个撤消的按钮 + action: SnackBarAction( // 提示信息上添加一个撤消的按钮 textColor:Colors.black, label: '撤消', onPressed: () { @@ -43,19 +43,19 @@ class SnackBarLessDefault extends StatelessWidget { ); Scaffold.of(context).showSnackBar(snackBar); }, - child: new Text('显示SnackBar'), + child: Text('显示SnackBar'), ), - new GestureDetector( + GestureDetector( onTap: () { - final snackBar = new SnackBar( - content: new Text('右侧无SnackBarAction'), + final snackBar = SnackBar( + content: Text('右侧无SnackBarAction'), backgroundColor:Colors.red, duration:Duration(minutes: 1),// 持续时间 //animation, ); Scaffold.of(context).showSnackBar(snackBar); }, - child: new Text('显示无SnackBarAction的SnackBar'), + child: Text('显示无SnackBarAction的SnackBar'), ), ], ) diff --git a/lib/widgets/components/Bar/SnackBar/index.dart b/lib/widgets/components/Bar/SnackBar/index.dart index ff1d31ad..e99b7b66 100644 --- a/lib/widgets/components/Bar/SnackBar/index.dart +++ b/lib/widgets/components/Bar/SnackBar/index.dart @@ -54,7 +54,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -72,7 +72,7 @@ Widget allDomes(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/Bar/SnackBarAction/demo.dart b/lib/widgets/components/Bar/SnackBarAction/demo.dart index e4c4547f..7acd5f75 100644 --- a/lib/widgets/components/Bar/SnackBarAction/demo.dart +++ b/lib/widgets/components/Bar/SnackBarAction/demo.dart @@ -16,15 +16,15 @@ class SnackBarActionDemo extends StatefulWidget { class _Demo extends State { Widget build(BuildContext context) { - return new Center( - child: new Column( + return Center( + child: Column( children: [ - new GestureDetector( - onTap: () { + new RaisedButton( + onPressed: () { final snackBar = new SnackBar( content: new Text('这是一个SnackBar, 右侧有SnackBarAction, 3秒后消失'), backgroundColor:Color(0xffc91b3a), - action: new SnackBarAction( // 提示信息上添加一个撤消的按钮 + action: SnackBarAction( // 提示信息上添加一个撤消的按钮 textColor:Colors.white, label: '撤消', onPressed: () { @@ -37,10 +37,10 @@ class _Demo extends State { Scaffold.of(context).showSnackBar(snackBar); }, - child: new Text('点我显示有action的SnackBar'), + child: Text('点我显示有action的SnackBar'), ), - new GestureDetector( - onTap: () async { + new RaisedButton( + onPressed: () async { final snackBar = new SnackBar( content: new Text('右侧无SnackBarAction, 3秒后消失'), backgroundColor:Color(0xffc91b3a), @@ -49,7 +49,7 @@ class _Demo extends State { ); Scaffold.of(context).showSnackBar(snackBar); }, - child: new Text('点我显示无SnackBarAction的SnackBar'), + child: Text('点我显示无SnackBarAction的SnackBar'), ), ], ) diff --git a/lib/widgets/components/Bar/TabBar/demo.dart b/lib/widgets/components/Bar/TabBar/demo.dart index 83caba93..1e8e5972 100644 --- a/lib/widgets/components/Bar/TabBar/demo.dart +++ b/lib/widgets/components/Bar/TabBar/demo.dart @@ -26,8 +26,8 @@ class _TabBarDemo extends State with SingleTickerProviderStateMixin { @override void initState() { super.initState(); - _scrollViewController = new ScrollController(); - _tabController = new TabController(vsync: this, length: 6);// 和下面的 TabBar.tabs 数量对应 + _scrollViewController = ScrollController(); + _tabController = TabController(vsync: this, length: 6);// 和下面的 TabBar.tabs 数量对应 } @override @@ -42,27 +42,27 @@ class _TabBarDemo extends State with SingleTickerProviderStateMixin { // 如果省略了 leading ,但 AppBar 在带有 Drawer 的 Scaffold 中,则会插入一个 button 以打开 Drawer。 // 否则,如果最近的 Navigator 具有任何先前的 router ,则会插入BackButton。 // 这种行为可以通过设置来关闭automaticallyImplyLeading 为false。在这种情况下,空的 leading widget 将导致 middle/title widget 拉伸开始。 - return new SizedBox( + return SizedBox( height: 500, - child:new Scaffold( - appBar: new AppBar( // 大量配置属性参考 SliverAppBar 示例 - title: new Text('TabBar'), - leading: new Icon(Icons.home), + child: Scaffold( + appBar: AppBar( // 大量配置属性参考 SliverAppBar 示例 + title: Text('TabBar'), + leading: Icon(Icons.home), backgroundColor: Colors.amber[1000], - bottom: new TabBar( + bottom: TabBar( isScrollable: true, controller: _tabController, tabs: [ - new Tab(text: "Tabs 1"), - new Tab(text: "Tabs 2"), - new Tab(text: "Tabs 3"), - new Tab(text: "Tabs 4"), - new Tab(text: "Tabs 5"), - new Tab(text: "Tabs 6"), + Tab(text: "Tabs 1"), + Tab(text: "Tabs 2"), + Tab(text: "Tabs 3"), + Tab(text: "Tabs 4"), + Tab(text: "Tabs 5"), + Tab(text: "Tabs 6"), ], ), ), - body: new TabBarView(controller: _tabController, children: [ + body: TabBarView(controller: _tabController, children: [ Text('TabsView 1'), Text('TabsView 2'), Text('TabsView 3'), diff --git a/lib/widgets/components/Card/Card/demo.dart b/lib/widgets/components/Card/Card/demo.dart index 107a6bd5..7e9de10b 100644 --- a/lib/widgets/components/Card/Card/demo.dart +++ b/lib/widgets/components/Card/Card/demo.dart @@ -50,9 +50,9 @@ class CardLessDefault extends StatelessWidget { margin:EdgeInsets.all(20.0), // margin: EdgeInsetsDirectional.only(bottom: 30.0, top: 30.0, start: 30.0),// 边距 semanticContainer:true, // 表示单个语义容器,还是false表示单个语义节点的集合,接受单个child,但该child可以是Row,Column或其他包含子级列表的widget -// shape:new Border.all( +// shape: Border.all( // color: Colors.indigo, width: 1.0, style: BorderStyle.solid), // 卡片材质的形状,以及边框 - shape:RoundedRectangleBorder(borderRadius: new BorderRadius.circular(20.0)), // 圆角 + shape:RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)), // 圆角 //borderRadius: BorderRadius.all(Radius.circular(8.0)), child: Column( //card里面的子控件 mainAxisSize: MainAxisSize.min, diff --git a/lib/widgets/components/Card/Card/index.dart b/lib/widgets/components/Card/Card/index.dart index 5ee1fbb5..ea59f5ca 100644 --- a/lib/widgets/components/Card/Card/index.dart +++ b/lib/widgets/components/Card/Card/index.dart @@ -52,7 +52,7 @@ class _DemoState extends State { */ Widget allDomes(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/Chip/inputChip/demo.dart b/lib/widgets/components/Chip/InputChip/demo.dart similarity index 100% rename from lib/widgets/components/Chip/inputChip/demo.dart rename to lib/widgets/components/Chip/InputChip/demo.dart diff --git a/lib/widgets/components/Chip/inputChip/index.dart b/lib/widgets/components/Chip/InputChip/index.dart similarity index 100% rename from lib/widgets/components/Chip/inputChip/index.dart rename to lib/widgets/components/Chip/InputChip/index.dart diff --git a/lib/widgets/components/Dialog/AboutDialog/demo.dart b/lib/widgets/components/Dialog/AboutDialog/demo.dart index df03d3a2..7d7f235e 100644 --- a/lib/widgets/components/Dialog/AboutDialog/demo.dart +++ b/lib/widgets/components/Dialog/AboutDialog/demo.dart @@ -19,9 +19,9 @@ class _Demo extends State { void showAlertDialog(BuildContext context) { showDialog( context: context, - builder: (_) => new AboutDialog( + builder: (_) => AboutDialog( applicationName: '名称', - applicationIcon: new Icon(Icons.ac_unit), + applicationIcon: Icon(Icons.ac_unit), applicationVersion: 'V1.0', children: [ Text('我是一个关于的dialog') @@ -29,12 +29,12 @@ class _Demo extends State { )); } Widget build(BuildContext context) { - return new RaisedButton( - padding: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), + return RaisedButton( + padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), //padding - child: new Text( + child: Text( 'show aboutDialog', - style: new TextStyle( + style: TextStyle( fontSize: 18.0, //textsize color: Colors.white, // textcolor ), diff --git a/lib/widgets/components/Dialog/AlertDialog/demo.dart b/lib/widgets/components/Dialog/AlertDialog/demo.dart index 44e707c4..ba00b0e9 100644 --- a/lib/widgets/components/Dialog/AlertDialog/demo.dart +++ b/lib/widgets/components/Dialog/AlertDialog/demo.dart @@ -119,12 +119,12 @@ class AlertDialogDemo extends StatelessWidget{ ); } Widget build(BuildContext context) { - return new RaisedButton( - padding: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), + return RaisedButton( + padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), //padding - child: new Text( + child: Text( '点我显示 AlertDialog', - style: new TextStyle( + style: TextStyle( fontSize: 18.0, //textsize color: Colors.white, // textcolor ), diff --git a/lib/widgets/components/Dialog/Dialog/demo.dart b/lib/widgets/components/Dialog/Dialog/demo.dart index 4f7f3818..c68ab35b 100644 --- a/lib/widgets/components/Dialog/Dialog/demo.dart +++ b/lib/widgets/components/Dialog/Dialog/demo.dart @@ -42,12 +42,12 @@ class _Demo extends State { ); } Widget build(BuildContext context) { - return new RaisedButton( - padding: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), + return RaisedButton( + padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), //padding - child: new Text( + child: Text( '点我显示 Dialog', - style: new TextStyle( + style: TextStyle( fontSize: 18.0, //textsize color: Colors.white, // textcolor ), @@ -108,14 +108,14 @@ class _DialogMoreDemo extends State { ); } Widget build(BuildContext context) { - return new Column( + return Column( children: [ - new RaisedButton( - padding: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), + RaisedButton( + padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), //padding - child: new Text( + child: Text( '点我显示Dialog', - style: new TextStyle( + style: TextStyle( fontSize: 18.0, //textsize color: Colors.white, // textcolor ), diff --git a/lib/widgets/components/Dialog/SimpleDialog/demo.dart b/lib/widgets/components/Dialog/SimpleDialog/demo.dart index 9e9b002a..870d46c0 100644 --- a/lib/widgets/components/Dialog/SimpleDialog/demo.dart +++ b/lib/widgets/components/Dialog/SimpleDialog/demo.dart @@ -20,17 +20,17 @@ class _Demo extends State { showDialog( context: context, builder: (BuildContext context) { - return new SimpleDialog( - title: new Text('选择'), + return SimpleDialog( + title: Text('选择'), children: [ - new SimpleDialogOption( - child: new Text('选项 1'), + SimpleDialogOption( + child: Text('选项 1'), onPressed: () { Navigator.of(context).pop(); }, ), - new SimpleDialogOption( - child: new Text('选项 2'), + SimpleDialogOption( + child: Text('选项 2'), onPressed: () { Navigator.of(context).pop(); }, @@ -41,12 +41,12 @@ class _Demo extends State { ); } Widget build(BuildContext context) { - return new RaisedButton( - padding: new EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), + return RaisedButton( + padding: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 10.0), //padding - child: new Text( + child: Text( 'show SimpleDialog', - style: new TextStyle( + style: TextStyle( fontSize: 18.0, //textsize color: Colors.white, // textcolor ), diff --git a/lib/widgets/components/Grid/GridPaper/demo.dart b/lib/widgets/components/Grid/GridPaper/demo.dart index 5a0f17e8..a1bf85c5 100644 --- a/lib/widgets/components/Grid/GridPaper/demo.dart +++ b/lib/widgets/components/Grid/GridPaper/demo.dart @@ -21,7 +21,7 @@ class _Demo extends State { return Container( height: 400, color: Color(0xffc91b3a), - child: new GridView.count( + child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 4.0, @@ -40,21 +40,21 @@ class _Demo extends State { ), GridPaper( color: Colors.red, - child: new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + child: Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), ), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), ], ) ); diff --git a/lib/widgets/components/Grid/GridTile/demo.dart b/lib/widgets/components/Grid/GridTile/demo.dart index 2936e155..17a0e048 100644 --- a/lib/widgets/components/Grid/GridTile/demo.dart +++ b/lib/widgets/components/Grid/GridTile/demo.dart @@ -21,7 +21,7 @@ class _Demo extends State { return Container( height: 400, color: Color(0xffc91b3a), - child: new GridView.count( + child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 4.0, @@ -36,21 +36,21 @@ class _Demo extends State { ), footer: Text("GridTile footer", style: TextStyle(color: Colors.white)), ), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), ], ) ); diff --git a/lib/widgets/components/Grid/GridTileBar/demo.dart b/lib/widgets/components/Grid/GridTileBar/demo.dart index adf85f36..b5e5ad98 100644 --- a/lib/widgets/components/Grid/GridTileBar/demo.dart +++ b/lib/widgets/components/Grid/GridTileBar/demo.dart @@ -21,7 +21,7 @@ class _Demo extends State { return Container( height: 400, color: Color(0xffc91b3a), - child: new GridView.count( + child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 4.0, @@ -38,21 +38,21 @@ class _Demo extends State { child: Container(), ), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), ], ) ); diff --git a/lib/widgets/components/Grid/GridView/demo.dart b/lib/widgets/components/Grid/GridView/demo.dart index adf85f36..b5e5ad98 100644 --- a/lib/widgets/components/Grid/GridView/demo.dart +++ b/lib/widgets/components/Grid/GridView/demo.dart @@ -21,7 +21,7 @@ class _Demo extends State { return Container( height: 400, color: Color(0xffc91b3a), - child: new GridView.count( + child: GridView.count( crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 4.0, @@ -38,21 +38,21 @@ class _Demo extends State { child: Container(), ), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), - new Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), + Image.network('https://flutter.io/assets/homepage/news-2-599aefd56e8aa903ded69500ef4102cdd8f988dab8d9e4d570de18bdb702ffd4.png', scale: 1, fit: BoxFit.cover), ], ) ); diff --git a/lib/widgets/components/Grid/SliverGrid/demo.dart b/lib/widgets/components/Grid/SliverGrid/demo.dart index 8950e17f..6745c2cf 100644 --- a/lib/widgets/components/Grid/SliverGrid/demo.dart +++ b/lib/widgets/components/Grid/SliverGrid/demo.dart @@ -17,34 +17,34 @@ class SliverGridDemo extends StatefulWidget { class _Demo extends State { Widget showCustomScrollView() { - return new CustomScrollView( + return CustomScrollView( slivers: [ - new SliverGrid( - gridDelegate: new SliverGridDelegateWithMaxCrossAxisExtent( + SliverGrid( + gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( maxCrossAxisExtent: 200.0, mainAxisSpacing: 10.0, crossAxisSpacing: 10.0, childAspectRatio: 4.0, ), - delegate: new SliverChildBuilderDelegate( + delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { - return new Container( + return Container( alignment: Alignment.center, color: Colors.cyan[100 * (index % 5)], - child: new Text('grid item $index'), + child: Text('grid item $index'), ); }, childCount: 20, ), ), -// new SliverFixedExtentList( +// SliverFixedExtentList( // itemExtent: 100.0, -// delegate: new SliverChildBuilderDelegate( +// delegate: SliverChildBuilderDelegate( // (BuildContext context, int index) { -// return new Container( +// return Container( // alignment: Alignment.center, // color: Colors.lightBlue[100 * (index % 9)], -// child: new Text('list item $index'), +// child: Text('list item $index'), // ); // }, // ), diff --git a/lib/widgets/components/LIst/AnimatedList/demo.dart b/lib/widgets/components/List/AnimatedList/demo.dart similarity index 84% rename from lib/widgets/components/LIst/AnimatedList/demo.dart rename to lib/widgets/components/List/AnimatedList/demo.dart index 78f457fb..43c7de7b 100644 --- a/lib/widgets/components/LIst/AnimatedList/demo.dart +++ b/lib/widgets/components/List/AnimatedList/demo.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:flutter_go/widgets/components/LIst/AnimatedList/model.dart'; +import 'package:flutter_go/widgets/components/List/AnimatedList/model.dart'; class AnimatedListFullDefault extends StatefulWidget { AnimatedListFullDefault({Key key, this.parent}) : super(key: key); @@ -15,7 +15,7 @@ class AnimatedListFullDefault extends StatefulWidget { * AnimatedList 默认的实例,有状态 * */ class _AnimatedListFullDefault extends State { - final GlobalKey _listKey = new GlobalKey(); + final GlobalKey _listKey = GlobalKey(); ListModel _list; int _selectedItem; int _nextItem; // The next item inserted when the user presses the '+' button. @@ -26,7 +26,7 @@ class _AnimatedListFullDefault extends State { if (widget.parent is State) { widget.parent.animatedList = this; // 修改父级的对象引用 } - _list = new ListModel( + _list = ListModel( listKey: _listKey, initialItems: [0, 1, 2], removedItemBuilder: _buildRemovedItem, @@ -43,14 +43,16 @@ class _AnimatedListFullDefault extends State { void remove() { if (_selectedItem != null) { _list.removeAt(_list.indexOf(_selectedItem)); - setState(() { - _selectedItem = null; - }); + if(mounted) { + setState(() { + _selectedItem = null; + }); + } } } Widget _buildItem(BuildContext context, int index, Animation animation) { - return new CardItem( + return CardItem( animation: animation, item: _list[index], selected: _selectedItem == _list[index], @@ -63,7 +65,7 @@ class _AnimatedListFullDefault extends State { } Widget _buildRemovedItem(int item, BuildContext context, Animation animation) { - return new CardItem( + return CardItem( animation: animation, item: item, selected: false, @@ -107,20 +109,20 @@ class CardItem extends StatelessWidget { TextStyle textStyle = Theme.of(context).textTheme.display1; if (selected) textStyle = textStyle.copyWith(color: Colors.lightGreenAccent[400]); - return new Padding( + return Padding( padding: const EdgeInsets.all(2.0), - child: new SizeTransition( + child: SizeTransition( axis: Axis.vertical, sizeFactor: animation, - child: new GestureDetector( + child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: onTap, - child: new SizedBox( + child: SizedBox( height: 128.0, - child: new Card( + child: Card( color: Colors.primaries[item % Colors.primaries.length], - child: new Center( - child: new Text('Item $item', style: textStyle), + child: Center( + child: Text('Item $item', style: textStyle), ), ), ), diff --git a/lib/widgets/components/LIst/AnimatedList/index.dart b/lib/widgets/components/List/AnimatedList/index.dart similarity index 97% rename from lib/widgets/components/LIst/AnimatedList/index.dart rename to lib/widgets/components/List/AnimatedList/index.dart index 05cae395..a2197110 100644 --- a/lib/widgets/components/LIst/AnimatedList/index.dart +++ b/lib/widgets/components/List/AnimatedList/index.dart @@ -58,7 +58,7 @@ class _DemoState extends State { */ Widget allDemoBoxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/LIst/AnimatedList/model.dart b/lib/widgets/components/List/AnimatedList/model.dart similarity index 96% rename from lib/widgets/components/LIst/AnimatedList/model.dart rename to lib/widgets/components/List/AnimatedList/model.dart index d990eb72..07b93853 100644 --- a/lib/widgets/components/LIst/AnimatedList/model.dart +++ b/lib/widgets/components/List/AnimatedList/model.dart @@ -25,7 +25,7 @@ class ListModel { Iterable initialItems, }) : assert(listKey != null), assert(removedItemBuilder != null), - _items = new List.from(initialItems ?? []); + _items = List.from(initialItems ?? []); final GlobalKey listKey; final dynamic removedItemBuilder; diff --git a/lib/widgets/components/LIst/ListBody/demo.dart b/lib/widgets/components/List/ListBody/demo.dart similarity index 100% rename from lib/widgets/components/LIst/ListBody/demo.dart rename to lib/widgets/components/List/ListBody/demo.dart diff --git a/lib/widgets/components/LIst/ListBody/index.dart b/lib/widgets/components/List/ListBody/index.dart similarity index 96% rename from lib/widgets/components/LIst/ListBody/index.dart rename to lib/widgets/components/List/ListBody/index.dart index 1699540b..f5ea6f0d 100644 --- a/lib/widgets/components/LIst/ListBody/index.dart +++ b/lib/widgets/components/List/ListBody/index.dart @@ -55,7 +55,7 @@ class _DemoState extends State { */ Widget allCheckboxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/components/LIst/ListView/demo.dart b/lib/widgets/components/List/ListView/demo.dart similarity index 100% rename from lib/widgets/components/LIst/ListView/demo.dart rename to lib/widgets/components/List/ListView/demo.dart diff --git a/lib/widgets/components/LIst/ListView/index.dart b/lib/widgets/components/List/ListView/index.dart similarity index 97% rename from lib/widgets/components/LIst/ListView/index.dart rename to lib/widgets/components/List/ListView/index.dart index c43ff044..01a6d246 100644 --- a/lib/widgets/components/LIst/ListView/index.dart +++ b/lib/widgets/components/List/ListView/index.dart @@ -81,7 +81,7 @@ class _DemoState extends State { */ Widget allCheckboxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -107,7 +107,7 @@ Widget allCheckboxs(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/LIst/index.dart b/lib/widgets/components/List/index.dart similarity index 100% rename from lib/widgets/components/LIst/index.dart rename to lib/widgets/components/List/index.dart diff --git a/lib/widgets/components/Menu/CheckedPopupMenuItem/demo.dart b/lib/widgets/components/Menu/CheckedPopupMenuItem/demo.dart index 8bbe3dce..77e2f4ac 100644 --- a/lib/widgets/components/Menu/CheckedPopupMenuItem/demo.dart +++ b/lib/widgets/components/Menu/CheckedPopupMenuItem/demo.dart @@ -36,8 +36,8 @@ class _CheckedPopupMenuItemDemoState extends State { _checkedValues.add(value); } - Scaffold.of(context).showSnackBar(new SnackBar( - content: new Text('Checked $_checkedValues'))); + Scaffold.of(context).showSnackBar( SnackBar( + content: Text('Checked $_checkedValues'))); } @override diff --git a/lib/widgets/components/Menu/PopupMenuButton/demo.dart b/lib/widgets/components/Menu/PopupMenuButton/demo.dart index f992f0f1..0ed78204 100644 --- a/lib/widgets/components/Menu/PopupMenuButton/demo.dart +++ b/lib/widgets/components/Menu/PopupMenuButton/demo.dart @@ -19,8 +19,8 @@ class _PopupMenuButtonDemoState extends State { void showMenuSelection(String value) { if ([_simpleValue1, _simpleValue2, _simpleValue3].contains(value)) _simpleValue = value; - Scaffold.of(context).showSnackBar(new SnackBar( - content: new Text('You selected: $value'))); + Scaffold.of(context).showSnackBar( SnackBar( + content: Text('You selected: $value'))); } diff --git a/lib/widgets/components/Menu/PopupMenuDivider/demo.dart b/lib/widgets/components/Menu/PopupMenuDivider/demo.dart index 94e2f8df..72d35b38 100644 --- a/lib/widgets/components/Menu/PopupMenuDivider/demo.dart +++ b/lib/widgets/components/Menu/PopupMenuDivider/demo.dart @@ -13,7 +13,7 @@ class PopupMenuDividerDemo extends StatefulWidget { class _PopupMenuDividerDemoState extends State { void showInSnackBar(String value) { Scaffold.of(context) - .showSnackBar(new SnackBar(content: new Text('You selected: $value'))); + .showSnackBar( SnackBar(content: Text('You selected: $value'))); } @override diff --git a/lib/widgets/components/Menu/PopupMenuDivider/index.dart b/lib/widgets/components/Menu/PopupMenuDivider/index.dart index 92beca57..e19d2d9f 100644 --- a/lib/widgets/components/Menu/PopupMenuDivider/index.dart +++ b/lib/widgets/components/Menu/PopupMenuDivider/index.dart @@ -18,7 +18,7 @@ const String content0 = ''' const String content1 = ''' ### **基本用法** > 此widget通过调整Divider widget 来适应于弹出菜单中 -- 在 PopupMenuButton 中直接 new PopupMenuDivider() 即可 +- 在 PopupMenuButton 中直接 PopupMenuDivider() 即可 '''; class Demo extends StatefulWidget { diff --git a/lib/widgets/components/Navigation/BottomNavigationBar/demo.dart b/lib/widgets/components/Navigation/BottomNavigationBar/demo.dart index bfb57610..c299017c 100644 --- a/lib/widgets/components/Navigation/BottomNavigationBar/demo.dart +++ b/lib/widgets/components/Navigation/BottomNavigationBar/demo.dart @@ -25,9 +25,11 @@ class _BottomNavigationBarFullDefault extends State { int _currentIndex = 1; void _onItemTapped(int index) { - setState(() { - _currentIndex = index; - }); + if(mounted) { + setState(() { + _currentIndex = index; + }); + } } @override @@ -40,17 +42,17 @@ class _BottomNavigationBarFullDefault extends State { fixedColor: Colors.deepPurple, // 如果 type 类型为 fixed,则通过 fixedColor 设置选中 item 的颜色 items: [ BottomNavigationBarItem( - title: new Text("Home"), icon: new Icon(Icons.home)), + title: Text("Home"), icon: Icon(Icons.home)), BottomNavigationBarItem( - title: new Text("List"), icon: new Icon(Icons.list)), + title: Text("List"), icon: Icon(Icons.list)), BottomNavigationBarItem( - title: new Text("Message"), icon: new Icon(Icons.message)), + title: Text("Message"), icon: Icon(Icons.message)), BottomNavigationBarItem( - title: new Text("add"), icon: new Icon(Icons.add)), + title: Text("add"), icon: Icon(Icons.add)), BottomNavigationBarItem( - title: new Text("menu"), icon: new Icon(Icons.menu)), + title: Text("menu"), icon: Icon(Icons.menu)), BottomNavigationBarItem( - title: new Text("other"), icon: new Icon(Icons.devices_other)), + title: Text("other"), icon: Icon(Icons.devices_other)), ], ); diff --git a/lib/widgets/components/Navigation/BottomNavigationBar/index.dart b/lib/widgets/components/Navigation/BottomNavigationBar/index.dart index c73376fc..56b28548 100644 --- a/lib/widgets/components/Navigation/BottomNavigationBar/index.dart +++ b/lib/widgets/components/Navigation/BottomNavigationBar/index.dart @@ -57,7 +57,7 @@ class _DemoState extends State { */ Widget allDemoBoxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -79,7 +79,7 @@ Widget allDemoBoxs(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/Navigation/BottomNavigationBarItem/demo.dart b/lib/widgets/components/Navigation/BottomNavigationBarItem/demo.dart index 03851151..dc31ea12 100644 --- a/lib/widgets/components/Navigation/BottomNavigationBarItem/demo.dart +++ b/lib/widgets/components/Navigation/BottomNavigationBarItem/demo.dart @@ -21,20 +21,20 @@ class BottomNavigationBarItemLessDefault extends StatelessWidget { @override Widget build(BuildContext context) { - return new SizedBox( + return SizedBox( height: 100, child: Scaffold( - bottomNavigationBar: new BottomNavigationBar(items: [ - new BottomNavigationBarItem( - icon: new Icon(Icons.laptop_chromebook), - title: new Text("主页"), + bottomNavigationBar: BottomNavigationBar(items: [ + BottomNavigationBarItem( + icon: Icon(Icons.laptop_chromebook), + title: Text("主页"), backgroundColor: Colors.red ), - new BottomNavigationBarItem( - icon: new Icon(Icons.list), title: new Text("分类"),backgroundColor: Colors.grey), - new BottomNavigationBarItem( - icon: new Icon(Icons.local_grocery_store), title: new Text("购物车")), - new BottomNavigationBarItem(icon: new Icon(Icons.person), title: new Text("我的")) + BottomNavigationBarItem( + icon: Icon(Icons.list), title: Text("分类"),backgroundColor: Colors.grey), + BottomNavigationBarItem( + icon: Icon(Icons.local_grocery_store), title: Text("购物车")), + BottomNavigationBarItem(icon: Icon(Icons.person), title: Text("我的")) ], //onTap: onTap, //currentIndex: page @@ -46,13 +46,13 @@ class BottomNavigationBarItemLessDefault extends StatelessWidget { //backgroundColor: Colors.grey, // -//// body: new PageView( +//// body: PageView( //// //// children: [ -//// new Index(), -//// new Classify(), -//// new Shopping(), -//// new Myself() +//// Index(), +//// Classify(), +//// Shopping(), +//// Myself() //// ], //// //// controller: pageController, diff --git a/lib/widgets/components/Navigation/BottomNavigationBarItem/index.dart b/lib/widgets/components/Navigation/BottomNavigationBarItem/index.dart index c1589873..e181e6b8 100644 --- a/lib/widgets/components/Navigation/BottomNavigationBarItem/index.dart +++ b/lib/widgets/components/Navigation/BottomNavigationBarItem/index.dart @@ -52,7 +52,7 @@ class _DemoState extends State { */ Widget allCheckboxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -70,7 +70,7 @@ Widget allCheckboxs(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/components/Pick/DayPicker/demo.dart b/lib/widgets/components/Pick/DayPicker/demo.dart index 36f249d1..445c4242 100644 --- a/lib/widgets/components/Pick/DayPicker/demo.dart +++ b/lib/widgets/components/Pick/DayPicker/demo.dart @@ -14,8 +14,8 @@ class DayPickerDemo extends StatefulWidget { } class _DayPickerState extends State { - DateTime _date = new DateTime.now(); - TimeOfDay _time = new TimeOfDay.now(); + DateTime _date = DateTime.now(); + TimeOfDay _time = TimeOfDay.now(); Future _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( @@ -29,7 +29,7 @@ class _DayPickerState extends State { _date = picked; }); - if (picked == null) _date = new DateTime.now(); + if (picked == null) _date = DateTime.now(); } Future _selectTime(BuildContext context) async { @@ -40,23 +40,23 @@ class _DayPickerState extends State { setState(() { _time = picked; }); - if (picked == null) _time = new TimeOfDay.now(); + if (picked == null) _time = TimeOfDay.now(); } @override Widget build(BuildContext context) { - return new Column( + return Column( children: [ - new Text('日期选择'), - new RaisedButton( - child: new Text('date selected:${_date.toString()}'), + Text('日期选择'), + RaisedButton( + child: Text('date selected:${_date.toString()}'), onPressed: () { _selectDate(context); }, ), - new Text('时间选择'), - new RaisedButton( - child: new Text('date selected:${_time.toString()}'), + Text('时间选择'), + RaisedButton( + child: Text('date selected:${_time.toString()}'), onPressed: () { _selectTime(context); }, diff --git a/lib/widgets/components/Pick/MonthPicker/demo.dart b/lib/widgets/components/Pick/MonthPicker/demo.dart index 40c053d8..808e6bf7 100644 --- a/lib/widgets/components/Pick/MonthPicker/demo.dart +++ b/lib/widgets/components/Pick/MonthPicker/demo.dart @@ -14,7 +14,7 @@ class MothPickerDemo extends StatefulWidget { } class _MothPickerState extends State { - DateTime _date = new DateTime.now(); + DateTime _date = DateTime.now(); Future _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( @@ -28,16 +28,16 @@ class _MothPickerState extends State { _date = picked; }); - if (picked == null) _date = new DateTime.now(); + if (picked == null) _date = DateTime.now(); } @override Widget build(BuildContext context) { - return new Column( + return Column( children: [ - new Text('日期选择'), - new RaisedButton( - child: new Text('date selected:${_date.toString()}'), + Text('日期选择'), + RaisedButton( + child: Text('date selected:${_date.toString()}'), onPressed: () { _selectDate(context); }, diff --git a/lib/widgets/components/Pick/ShowdatePicker/demo.dart b/lib/widgets/components/Pick/ShowdatePicker/demo.dart index c18bdded..e62520e9 100644 --- a/lib/widgets/components/Pick/ShowdatePicker/demo.dart +++ b/lib/widgets/components/Pick/ShowdatePicker/demo.dart @@ -14,8 +14,8 @@ class ShowDatePickerDemo extends StatefulWidget { } class _ShowDatePickerState extends State { - DateTime _date = new DateTime.now(); - TimeOfDay _time = new TimeOfDay.now(); + DateTime _date = DateTime.now(); + TimeOfDay _time = TimeOfDay.now(); Future _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( @@ -29,7 +29,7 @@ class _ShowDatePickerState extends State { _date = picked; }); - if (picked == null) _date = new DateTime.now(); + if (picked == null) _date = DateTime.now(); } Future _selectTime(BuildContext context) async { @@ -40,23 +40,23 @@ class _ShowDatePickerState extends State { setState(() { _time = picked; }); - if (picked == null) _time = new TimeOfDay.now(); + if (picked == null) _time = TimeOfDay.now(); } @override Widget build(BuildContext context) { - return new Column( + return Column( children: [ - new Text('日期选择'), - new RaisedButton( - child: new Text('date selected:${_date.toString()}'), + Text('日期选择'), + RaisedButton( + child: Text('date selected:${_date.toString()}'), onPressed: () { _selectDate(context); }, ), - new Text('时间选择'), - new RaisedButton( - child: new Text('date selected:${_time.toString()}'), + Text('时间选择'), + RaisedButton( + child: Text('date selected:${_time.toString()}'), onPressed: () { _selectTime(context); }, diff --git a/lib/widgets/components/Pick/YearPicker/demo.dart b/lib/widgets/components/Pick/YearPicker/demo.dart index 2a9694e7..1755e9e8 100644 --- a/lib/widgets/components/Pick/YearPicker/demo.dart +++ b/lib/widgets/components/Pick/YearPicker/demo.dart @@ -14,7 +14,7 @@ class YearPickerDemo extends StatefulWidget { } class _YearPickerDemoState extends State { - DateTime _date = new DateTime.now(); + DateTime _date = DateTime.now(); Future _selectDate(BuildContext context) async { final DateTime picked = await showDatePicker( @@ -28,16 +28,16 @@ class _YearPickerDemoState extends State { _date = picked; }); - if (picked == null) _date = new DateTime.now(); + if (picked == null) _date = DateTime.now(); } @override Widget build(BuildContext context) { - return new Column( + return Column( children: [ - new Text('日期选择'), - new RaisedButton( - child: new Text('date selected:${_date.toString()}'), + Text('日期选择'), + RaisedButton( + child: Text('date selected:${_date.toString()}'), onPressed: () { _selectDate(context); }, diff --git a/lib/widgets/components/Scaffold/Scaffold/demo.dart b/lib/widgets/components/Scaffold/Scaffold/demo.dart index 30bed6e8..e5d31773 100644 --- a/lib/widgets/components/Scaffold/Scaffold/demo.dart +++ b/lib/widgets/components/Scaffold/Scaffold/demo.dart @@ -37,9 +37,9 @@ class _ScaffoldDemo extends State with SingleTickerProviderStateMixin { // 如果省略了 leading ,但 AppBar 在带有 Drawer 的 Scaffold 中,则会插入一个 button 以打开 Drawer。 // 否则,如果最近的 Navigator 具有任何先前的 router ,则会插入BackButton。 // 这种行为可以通过设置来关闭automaticallyImplyLeading 为false。在这种情况下,空的 leading widget 将导致 middle/title widget 拉伸开始。 - return new SizedBox( + return SizedBox( height: 500, - child: new Scaffold( + child: Scaffold( appBar: AppBar( title: Text('Sample Code'), ), diff --git a/lib/widgets/components/Scaffold/Scaffold/index.dart b/lib/widgets/components/Scaffold/Scaffold/index.dart index 95b0d9ce..280ee05d 100644 --- a/lib/widgets/components/Scaffold/Scaffold/index.dart +++ b/lib/widgets/components/Scaffold/Scaffold/index.dart @@ -56,7 +56,7 @@ class _DemoState extends State { codeUrl: 'components/Scaffold/Scaffold/demo.dart', contentList: [ _Text0, - new ScaffoldDemo(), + ScaffoldDemo(), ], docUrl: 'https://docs.flutter.io/flutter/material/Scaffold-class.html', ); diff --git a/lib/widgets/components/Scaffold/ScaffoldState/demo.dart b/lib/widgets/components/Scaffold/ScaffoldState/demo.dart index 9c31dbd0..5ecc0ad7 100644 --- a/lib/widgets/components/Scaffold/ScaffoldState/demo.dart +++ b/lib/widgets/components/Scaffold/ScaffoldState/demo.dart @@ -28,9 +28,9 @@ class _ScaffoldStateDemo extends State with SingleTickerProviderStateMixin { // 如果省略了 leading ,但 AppBar 在带有 Drawer 的 Scaffold 中,则会插入一个 button 以打开 Drawer。 // 否则,如果最近的 Navigator 具有任何先前的 router ,则会插入BackButton。 // 这种行为可以通过设置来关闭automaticallyImplyLeading 为false。在这种情况下,空的 leading widget 将导致 middle/title widget 拉伸开始。 - return new SizedBox( + return SizedBox( height: 500, - child:new Scaffold( + child: Scaffold( key:_scaffoldKey, appBar: AppBar( title: Text('ScaffoldState Demo'), diff --git a/lib/widgets/components/Scroll/ScrollPhysics/demo.dart b/lib/widgets/components/Scroll/ScrollPhysics/demo.dart index 9cd6018d..5ded6c44 100644 --- a/lib/widgets/components/Scroll/ScrollPhysics/demo.dart +++ b/lib/widgets/components/Scroll/ScrollPhysics/demo.dart @@ -11,7 +11,7 @@ class ScrollPhysicsDemo extends StatefulWidget { } class _ScrollPhysicsDemoState extends State { - final PageController _pageController = new PageController(); + final PageController _pageController = PageController(); double _currentPage = 0.0; @override @@ -54,21 +54,21 @@ class _SimplePage extends StatelessWidget { final double parallaxOffset; @override - Widget build(BuildContext context) => new Center( + Widget build(BuildContext context) => Center( child: Container( color: Theme.of(context).primaryColor, - child: new Center( - child: new Column( + child: Center( + child: Column( mainAxisSize: MainAxisSize.min, children: [ - new Text( + Text( data, style: const TextStyle(fontSize: 60.0,color: Colors.white), ), - new SizedBox(height: 40.0), - new Transform( + SizedBox(height: 40.0), + Transform( transform: - new Matrix4.translationValues(parallaxOffset, 0.0, 0.0), + Matrix4.translationValues(parallaxOffset, 0.0, 0.0), child: const Text('左右滑动,这是第二行滚动速度更快的小字',style: const TextStyle(fontSize: 16.0,color: Colors.white),), ), ], diff --git a/lib/widgets/elements/Form/Button/DropdownButton/demo.dart b/lib/widgets/elements/Form/Button/DropdownButton/demo.dart index a2a97503..43d90cfd 100644 --- a/lib/widgets/elements/Form/Button/DropdownButton/demo.dart +++ b/lib/widgets/elements/Form/Button/DropdownButton/demo.dart @@ -17,15 +17,15 @@ var selectItemValue; class DropdownButtonDefault extends StatelessWidget { List generateItemList() { - final List items = new List(); - final DropdownMenuItem item1 = new DropdownMenuItem( - value: '张三', child: new Text('张三')); - final DropdownMenuItem item2 = new DropdownMenuItem( - value: '李四', child: new Text('李四')); - final DropdownMenuItem item3 = new DropdownMenuItem( - value: '王二', child: new Text('王二')); - final DropdownMenuItem item4 = new DropdownMenuItem( - value: '麻子', child: new Text('麻子')); + final List items = List(); + final DropdownMenuItem item1 = DropdownMenuItem( + value: '张三', child: Text('张三')); + final DropdownMenuItem item2 = DropdownMenuItem( + value: '李四', child: Text('李四')); + final DropdownMenuItem item3 = DropdownMenuItem( + value: '王二', child: Text('王二')); + final DropdownMenuItem item4 = DropdownMenuItem( + value: '麻子', child: Text('麻子')); items.add(item1); items.add(item2); items.add(item3); @@ -36,7 +36,7 @@ class DropdownButtonDefault extends StatelessWidget { @override Widget build(BuildContext context) { return DropdownButton( - hint: new Text('下拉菜单选择一个人名'), + hint: Text('下拉菜单选择一个人名'), //设置这个value之后,选中对应位置的item, //再次呼出下拉菜单,会自动定位item位置在当前按钮显示的位置处 value: selectItValue, @@ -51,54 +51,54 @@ class DropdownButtonDefault extends StatelessWidget { } List getListData(){ - List items=new List(); - DropdownMenuItem dropdownMenuItem1=new DropdownMenuItem( - child:new Text('1'), + List items= List(); + DropdownMenuItem dropdownMenuItem1= DropdownMenuItem( + child: Text('1'), value: '1', ); items.add(dropdownMenuItem1); - DropdownMenuItem dropdownMenuItem2=new DropdownMenuItem( - child:new Text('2'), + DropdownMenuItem dropdownMenuItem2= DropdownMenuItem( + child: Text('2'), value: '2', ); items.add(dropdownMenuItem2); - DropdownMenuItem dropdownMenuItem3=new DropdownMenuItem( - child:new Text('3'), + DropdownMenuItem dropdownMenuItem3= DropdownMenuItem( + child: Text('3'), value: '3', ); items.add(dropdownMenuItem3); - DropdownMenuItem dropdownMenuItem4=new DropdownMenuItem( - child:new Text('4'), + DropdownMenuItem dropdownMenuItem4= DropdownMenuItem( + child: Text('4'), value: '4', ); items.add(dropdownMenuItem4); - DropdownMenuItem dropdownMenuItem5=new DropdownMenuItem( - child:new Text('5'), + DropdownMenuItem dropdownMenuItem5= DropdownMenuItem( + child: Text('5'), value: '5', ); items.add(dropdownMenuItem5); - DropdownMenuItem dropdownMenuItem6=new DropdownMenuItem( - child:new Text('6'), + DropdownMenuItem dropdownMenuItem6= DropdownMenuItem( + child: Text('6'), value: '6', ); items.add(dropdownMenuItem6); - DropdownMenuItem dropdownMenuItem7=new DropdownMenuItem( - child:new Text('7'), + DropdownMenuItem dropdownMenuItem7= DropdownMenuItem( + child: Text('7'), value: '7', ); items.add(dropdownMenuItem7); - DropdownMenuItem dropdownMenuItem8=new DropdownMenuItem( - child:new Text('8'), + DropdownMenuItem dropdownMenuItem8= DropdownMenuItem( + child: Text('8'), value: '8', ); items.add(dropdownMenuItem8); - DropdownMenuItem dropdownMenuItem9=new DropdownMenuItem( - child:new Text('9'), + DropdownMenuItem dropdownMenuItem9= DropdownMenuItem( + child: Text('9'), value: '9', ); items.add(dropdownMenuItem9); - DropdownMenuItem dropdownMenuItem10=new DropdownMenuItem( - child:new Text('10'), + DropdownMenuItem dropdownMenuItem10= DropdownMenuItem( + child: Text('10'), value: '10', ); items.add(dropdownMenuItem10); @@ -124,9 +124,11 @@ class DropdownButtonCustom extends StatelessWidget { value: selectItemValue, //下拉菜单item点击之后的回调 onChanged: (T){ - parent.setState((){ - selectItemValue = T; - }); + if (parent.mounted) { + parent.setState(() { + selectItemValue = T; + }); + } }, //设置阴影的高度 elevation: 24, diff --git a/lib/widgets/elements/Form/Button/DropdownButton/index.dart b/lib/widgets/elements/Form/Button/DropdownButton/index.dart index b6f98d4e..1947f256 100644 --- a/lib/widgets/elements/Form/Button/DropdownButton/index.dart +++ b/lib/widgets/elements/Form/Button/DropdownButton/index.dart @@ -62,7 +62,7 @@ class _DemoState extends State { */ Widget allDropdownButtons(BuildContext context,_DemoState that){ return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -87,14 +87,14 @@ Widget allDropdownButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } diff --git a/lib/widgets/elements/Form/Button/FlatButton/demo.dart b/lib/widgets/elements/Form/Button/FlatButton/demo.dart index ee2b36c4..845420c2 100644 --- a/lib/widgets/elements/Form/Button/FlatButton/demo.dart +++ b/lib/widgets/elements/Form/Button/FlatButton/demo.dart @@ -101,9 +101,9 @@ class FlatButtonCustom extends StatelessWidget { splashColor: Colors.deepPurple, // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias clipBehavior: Clip.antiAlias, - padding: new EdgeInsets.only( + padding: EdgeInsets.only( bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), - shape: (shape is ShapeBorder) ? shape : new Border.all( + shape: (shape is ShapeBorder) ? shape : Border.all( // 设置边框样式 color: Colors.grey, width: 2.0, diff --git a/lib/widgets/elements/Form/Button/FlatButton/index.dart b/lib/widgets/elements/Form/Button/FlatButton/index.dart index faf80259..967fb8a9 100644 --- a/lib/widgets/elements/Form/Button/FlatButton/index.dart +++ b/lib/widgets/elements/Form/Button/FlatButton/index.dart @@ -64,7 +64,7 @@ class _DemoState extends State { */ Widget allFlatButtons(BuildContext context){ return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -109,7 +109,7 @@ Widget allFlatButtons(BuildContext context){ flatButton.FlatButtonCustom('危险按钮',Colors.pink), SizedBox(height: 10.0), flatButton.FlatButtonCustom('点击我试试!', Colors.red, - new Border.all(color: Colors.brown, width: 5.0, style: BorderStyle.solid), + Border.all(color: Colors.brown, width: 5.0, style: BorderStyle.solid), () => _showMessage('点击了 FLAT BUTTON ', context)), SizedBox(height: 20.0) ]) @@ -126,16 +126,16 @@ void _showMessage(String name, BuildContext context) { context: context, builder: (BuildContext context) { return AlertDialog( - title: new Text('提示'), - content: new Text(name), + title: Text('提示'), + content: Text(name), actions: [ - new FlatButton( + FlatButton( // alert 的取消按钮 onPressed: () { // 取消的事件 Navigator.of(context).pop(true); }, - child: new Text('取消')) + child: Text('取消')) ]); } ); @@ -145,14 +145,14 @@ void _showMessage(String name, BuildContext context) { * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } diff --git a/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart b/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart index f4188499..e4fbba56 100644 --- a/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart +++ b/lib/widgets/elements/Form/Button/FloatingActionButton/demo.dart @@ -49,7 +49,7 @@ class FloatingActionButtonCustom extends StatelessWidget { @override Widget build(BuildContext context) { final _onPressed = onPressed; - return new FloatingActionButton( + return FloatingActionButton( // 子视图,一般为Icon,不推荐使用文字 child: const Icon(Icons.refresh), // FAB的文字解释,FAB被长按时显示,也是无障碍功能 @@ -109,8 +109,8 @@ class FloatingActionButtonCustom2 extends StatelessWidget { foregroundColor: Colors.white, backgroundColor: Colors.amber, //如果不手动设置icon和text颜色,则默认使用foregroundColor颜色 - icon: new Icon(Icons.flag,color: Colors.red), - label: new Text('FloatingActionButton.extended', maxLines: 1), + icon: Icon(Icons.flag,color: Colors.red), + label: Text('FloatingActionButton.extended', maxLines: 1), ); } } diff --git a/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart b/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart index e7cbb728..13038726 100644 --- a/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart +++ b/lib/widgets/elements/Form/Button/FloatingActionButton/index.dart @@ -50,9 +50,11 @@ class _DemoState extends State { String buttonShapeType = 'border'; // 边框类型 void setButtonShapeType(){ String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; - this.setState((){ - buttonShapeType = _buttonShapeType; - }); + if(mounted) { + this.setState(() { + buttonShapeType = _buttonShapeType; + }); + } } @override Widget build(BuildContext context) { @@ -72,7 +74,7 @@ class _DemoState extends State { Widget allFloatingActionButtons(BuildContext context,_DemoState that){ final ShapeBorder buttonShape = drawShape(that.buttonShapeType); return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -109,16 +111,16 @@ Widget allFloatingActionButtons(BuildContext context,_DemoState that){ // context: context, // builder: (BuildContext context) { // return AlertDialog( -// title: new Text('提示'), -// content: new Text(name), +// title: Text('提示'), +// content: Text(name), // actions: [ -// new FlatButton( +// FlatButton( // // alert 的取消按钮 // onPressed: () { // // 取消的事件 // Navigator.of(context).pop(true); // }, -// child: new Text('取消')) +// child: Text('取消')) // ]); // } // ); @@ -128,14 +130,14 @@ Widget allFloatingActionButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } @@ -159,7 +161,7 @@ ShapeBorder drawShape(String type){ break; case 'radius': return RoundedRectangleBorder( - side:new BorderSide( // 保留原来的边框样式 + side: BorderSide( // 保留原来的边框样式 width: borderWidth, color: _color, style: BorderStyle.solid, diff --git a/lib/widgets/elements/Form/Button/IconButton/demo.dart b/lib/widgets/elements/Form/Button/IconButton/demo.dart index d59f5a13..5a8077fb 100644 --- a/lib/widgets/elements/Form/Button/IconButton/demo.dart +++ b/lib/widgets/elements/Form/Button/IconButton/demo.dart @@ -75,7 +75,7 @@ class IconButtonCustom extends StatelessWidget { iconSize:(Random.secure().nextInt(20)+20).toDouble(), // 随机大小 // 按钮内部,墨汁飞溅的颜色,点击按钮时的渐变背景色,当你不设置高亮背景时才会看的更清楚 splashColor: _randomColor(), - padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + padding: EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), // 描述按下按钮时将发生的操作的文本 tooltip:'这是${ type.codePoint }信息', // IconButton 的点击事件 diff --git a/lib/widgets/elements/Form/Button/IconButton/index.dart b/lib/widgets/elements/Form/Button/IconButton/index.dart index 278173b9..64f44eaa 100644 --- a/lib/widgets/elements/Form/Button/IconButton/index.dart +++ b/lib/widgets/elements/Form/Button/IconButton/index.dart @@ -45,9 +45,11 @@ class _DemoState extends State { String buttonShapeType = 'border'; // 边框类型 void setButtonShapeType(){ String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; - this.setState((){ - buttonShapeType = _buttonShapeType; - }); + if(mounted) { + this.setState(() { + buttonShapeType = _buttonShapeType; + }); + } } @override Widget build(BuildContext context) { @@ -66,7 +68,7 @@ class _DemoState extends State { Widget allIconButtons(BuildContext context,_DemoState that){ final ShapeBorder buttonShape = drawShape(that.buttonShapeType); return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -106,14 +108,14 @@ Widget allIconButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } @@ -137,7 +139,7 @@ ShapeBorder drawShape(String type){ break; case 'radius': return RoundedRectangleBorder( - side:new BorderSide( // 保留原来的边框样式 + side: BorderSide( // 保留原来的边框样式 width: borderWidth, color: _color, style: BorderStyle.solid, diff --git a/lib/widgets/elements/Form/Button/OutlineButton/demo.dart b/lib/widgets/elements/Form/Button/OutlineButton/demo.dart index 582d7135..39d4b313 100644 --- a/lib/widgets/elements/Form/Button/OutlineButton/demo.dart +++ b/lib/widgets/elements/Form/Button/OutlineButton/demo.dart @@ -79,7 +79,7 @@ class OutlineButtonCustom extends StatelessWidget { // 文本内容 child: Text(txt, semanticsLabel: 'FLAT BUTTON 2'), // 边框的颜色,颜色也可以走主题色 Theme.of(context).primaryColor - borderSide:new BorderSide(color: _randomColor(),width:Random.secure().nextInt(10).toDouble()), + borderSide: BorderSide(color: _randomColor(),width:Random.secure().nextInt(10).toDouble()), // 按钮颜色 color: _randomColor(), // 按钮失效时边框颜色 @@ -100,7 +100,7 @@ class OutlineButtonCustom extends StatelessWidget { splashColor: _randomColor(), // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias clipBehavior: Clip.antiAlias, - padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + padding: EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), //高亮时候的阴影 highlightElevation: 10.0, shape: shape, // 在Outline 里只能设置圆角,边框用borderSide diff --git a/lib/widgets/elements/Form/Button/OutlineButton/index.dart b/lib/widgets/elements/Form/Button/OutlineButton/index.dart index 8ab15911..e94a4f88 100644 --- a/lib/widgets/elements/Form/Button/OutlineButton/index.dart +++ b/lib/widgets/elements/Form/Button/OutlineButton/index.dart @@ -54,9 +54,11 @@ class _DemoState extends State { String buttonShapeType = 'border'; // 边框类型 void setButtonShapeType(){ String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; - this.setState((){ - buttonShapeType = _buttonShapeType; - }); + if (mounted) { + this.setState(() { + buttonShapeType = _buttonShapeType; + }); + } } @override Widget build(BuildContext context) { @@ -75,7 +77,7 @@ class _DemoState extends State { Widget allOutlineButtons(BuildContext context,_DemoState that){ final ShapeBorder buttonShape = drawShape(that.buttonShapeType); return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -136,16 +138,16 @@ Widget allOutlineButtons(BuildContext context,_DemoState that){ // context: context, // builder: (BuildContext context) { // return AlertDialog( -// title: new Text('提示'), -// content: new Text(name), +// title: Text('提示'), +// content: Text(name), // actions: [ -// new FlatButton( +// FlatButton( // // alert 的取消按钮 // onPressed: () { // // 取消的事件 // Navigator.of(context).pop(true); // }, -// child: new Text('取消')) +// child: Text('取消')) // ]); // } // ); @@ -155,14 +157,14 @@ Widget allOutlineButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } @@ -186,7 +188,7 @@ ShapeBorder drawShape(String type){ break; case 'radius': return RoundedRectangleBorder( - side:new BorderSide( // 保留原来的边框样式 + side: BorderSide( // 保留原来的边框样式 width: borderWidth, color: _color, style: BorderStyle.solid, diff --git a/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart b/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart index 40e8099f..bfe50fe4 100644 --- a/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart +++ b/lib/widgets/elements/Form/Button/PopupMenuButton/demo.dart @@ -71,8 +71,8 @@ class PopupMenuButtonDefault extends StatelessWidget { child: Text('点我试试'), onSelected: (String value) {}, itemBuilder: (BuildContext context) => >[ - new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), - new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")) + PopupMenuItem(value: "选项一的内容", child: Text("选项一")), + PopupMenuItem(value: "选项二的内容", child: Text("选项二")) ]); } @@ -82,8 +82,8 @@ class PopupMenuButtonDefault extends StatelessWidget { icon: Icon(Icons.menu), onSelected: (String value) {}, itemBuilder: (BuildContext context) => >[ - new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), - new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")) + PopupMenuItem(value: "选项一的内容", child: Text("选项一")), + PopupMenuItem(value: "选项二的内容", child: Text("选项二")) ]); } } @@ -116,10 +116,10 @@ class PopupMenuButtonCustom extends StatelessWidget { initialValue:selectStr, // 按下按钮时调用以创建要在菜单中显示的项目。 itemBuilder: (BuildContext context) => >[ - new PopupMenuItem(value: "选项一的内容", child: new Text("选项一")), - new PopupMenuItem(value: "选项二的内容", child: new Text("选项二")), - new PopupMenuItem(value: "选项三的内容", child: new Text("选项三")), - new PopupMenuItem(value: "选项四的内容", child: new Text("选项四")) + PopupMenuItem(value: "选项一的内容", child: Text("选项一")), + PopupMenuItem(value: "选项二的内容", child: Text("选项二")), + PopupMenuItem(value: "选项三的内容", child: Text("选项三")), + PopupMenuItem(value: "选项四的内容", child: Text("选项四")) ], // 应用于弹出菜单按钮的偏移量(x,y)。 offset:Offset(0.0,50.0), @@ -134,7 +134,7 @@ class PopupMenuButtonCustom extends StatelessWidget { }); }, // 默认情况下匹配IconButton的8 dps填充。在某些情况下,特别是在此按钮作为列表项的尾随元素出现的情况下,能够将填充设置为零是有用的。 - padding:new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0.0, right: 0.0), + padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0.0, right: 0.0), //描述按下按钮时将发生的操作的文本。 tooltip:'这是信息' ); diff --git a/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart b/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart index 1ddcc856..012832d7 100644 --- a/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart +++ b/lib/widgets/elements/Form/Button/PopupMenuButton/index.dart @@ -64,7 +64,7 @@ class _DemoState extends State { Widget allPopupMenuButton(Demo widget,State parent){ return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ diff --git a/lib/widgets/elements/Form/Button/RaisedButton/demo.dart b/lib/widgets/elements/Form/Button/RaisedButton/demo.dart index 0ddece9d..6790d4e0 100644 --- a/lib/widgets/elements/Form/Button/RaisedButton/demo.dart +++ b/lib/widgets/elements/Form/Button/RaisedButton/demo.dart @@ -105,10 +105,10 @@ class RaisedButtonCustom extends StatelessWidget { // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias clipBehavior: Clip.antiAlias, padding: - new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), shape: (shape is ShapeBorder) ? shape - : new Border.all( + : Border.all( // 设置边框样式 color: Colors.grey, width: 2.0, diff --git a/lib/widgets/elements/Form/Button/RaisedButton/index.dart b/lib/widgets/elements/Form/Button/RaisedButton/index.dart index 9342f00e..089ea143 100644 --- a/lib/widgets/elements/Form/Button/RaisedButton/index.dart +++ b/lib/widgets/elements/Form/Button/RaisedButton/index.dart @@ -53,9 +53,11 @@ class _DemoState extends State { String buttonShapeType = 'border'; // 边框类型 void setButtonShapeType(){ String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; - this.setState((){ - buttonShapeType = _buttonShapeType; - }); + if(mounted) { + this.setState(() { + buttonShapeType = _buttonShapeType; + }); + } } @override Widget build(BuildContext context) { @@ -74,7 +76,7 @@ class _DemoState extends State { Widget allRaisedButtons(BuildContext context,_DemoState that){ final ShapeBorder buttonShape = drawShape(that.buttonShapeType); return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -135,16 +137,16 @@ Widget allRaisedButtons(BuildContext context,_DemoState that){ // context: context, // builder: (BuildContext context) { // return AlertDialog( -// title: new Text('提示'), -// content: new Text(name), +// title: Text('提示'), +// content: Text(name), // actions: [ -// new FlatButton( +// FlatButton( // // alert 的取消按钮 // onPressed: () { // // 取消的事件 // Navigator.of(context).pop(true); // }, -// child: new Text('取消')) +// child: Text('取消')) // ]); // } // ); @@ -154,14 +156,14 @@ Widget allRaisedButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } @@ -185,7 +187,7 @@ ShapeBorder drawShape(String type){ break; case 'radius': return RoundedRectangleBorder( - side:new BorderSide( // 保留原来的边框样式 + side: BorderSide( // 保留原来的边框样式 width: borderWidth, color: _color, style: BorderStyle.solid, diff --git a/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart b/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart index 3b309a0b..407b0c92 100644 --- a/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart +++ b/lib/widgets/elements/Form/Button/RawMaterialButton/demo.dart @@ -62,7 +62,7 @@ class RawMaterialButtonCustom extends StatelessWidget { splashColor: _randomColor(), // 抗锯齿能力,抗锯齿等级依次递增,none(默认),hardEdge,antiAliasWithSaveLayer,antiAlias clipBehavior: Clip.antiAlias, - padding: new EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), + padding: EdgeInsets.only(bottom: 5.0, top: 5.0, left: 30.0, right: 30.0), //高亮时候的阴影 highlightElevation: 10.0, // 按钮材质的形状 diff --git a/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart b/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart index 24a44bd8..581b0c15 100644 --- a/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart +++ b/lib/widgets/elements/Form/Button/RawMaterialButton/index.dart @@ -43,9 +43,11 @@ class _DemoState extends State { String buttonShapeType = 'border'; // 边框类型 void setButtonShapeType(){ //String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; - this.setState((){ - //buttonShapeType = _buttonShapeType; - }); + if( mounted ) { + this.setState(() { + //buttonShapeType = _buttonShapeType; + }); + } } @override Widget build(BuildContext context) { @@ -64,7 +66,7 @@ class _DemoState extends State { Widget allRawMaterialButtons(BuildContext context,_DemoState that){ final ShapeBorder buttonShape = drawShape(that.buttonShapeType); return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -108,16 +110,16 @@ Widget allRawMaterialButtons(BuildContext context,_DemoState that){ // context: context, // builder: (BuildContext context) { // return AlertDialog( -// title: new Text('提示'), -// content: new Text(name), +// title: Text('提示'), +// content: Text(name), // actions: [ -// new FlatButton( +// FlatButton( // // alert 的取消按钮 // onPressed: () { // // 取消的事件 // Navigator.of(context).pop(true); // }, -// child: new Text('取消')) +// child: Text('取消')) // ]); // } // ); @@ -127,14 +129,14 @@ Widget allRawMaterialButtons(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - //style: new TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left - return new Align( + //style: TextStyle(fontSize: 15.5, height: 1.2),textAlign:TextAlign.left + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } @@ -158,7 +160,7 @@ ShapeBorder drawShape(String type){ break; case 'radius': return RoundedRectangleBorder( - side:new BorderSide( // 保留原来的边框样式 + side: BorderSide( // 保留原来的边框样式 width: borderWidth, color: _color, style: BorderStyle.solid, diff --git a/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart b/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart index c34d10af..a524c0d9 100644 --- a/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart +++ b/lib/widgets/elements/Form/CheckBox/Checkbox/demo.dart @@ -30,9 +30,11 @@ class _CheckboxDefault extends State { tristate:false, value: isChecked, onChanged: (bool bol) { - setState((){ - isChecked = bol; - }); + if(mounted) { + setState(() { + isChecked = bol; + }); + } } ); } @@ -58,9 +60,11 @@ class CheckboxSelect extends StatelessWidget { tristate:false, value: parent.selectValue == this.index, onChanged: (bool bol) { - parent.setState((){ - parent.selectValue = bol ? this.index : -1; - }); + if(parent.mounted) { + parent.setState(() { + parent.selectValue = bol ? this.index : -1; + }); + } } ); } diff --git a/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart b/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart index b99b354c..a7715fda 100644 --- a/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart +++ b/lib/widgets/elements/Form/CheckBox/Checkbox/index.dart @@ -59,7 +59,7 @@ class _DemoState extends State { */ Widget allCheckboxs(BuildContext context,_DemoState that){ return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children: [ @@ -97,13 +97,13 @@ Widget allCheckboxs(BuildContext context,_DemoState that){ * 带align的text * */ Widget textAlignBar(String txt){ - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ SizedBox(height: 20.0), MarkdownBody(data: txt) - //new Text(txt, style: new TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) + // Text(txt, style: TextStyle(fontSize: 15.5,height: 1.2,color:Colors.blue),textAlign:TextAlign.left) ]) ); } diff --git a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart index d4e5c2a9..315a607d 100644 --- a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart +++ b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/demo.dart @@ -25,7 +25,9 @@ class _CheckboxListTileStateDefault extends State { for (var i = 0; i < isChecks.length; i++) { isChecks[i] = value; } - setState(() => _value = value); + if(mounted) { + setState(() => _value = value); + } } bool isCheck=false; List isChecks=[false,false,false,false]; @@ -34,7 +36,7 @@ class _CheckboxListTileStateDefault extends State { return Column( mainAxisAlignment: MainAxisAlignment.start, children: [ - new Center( + Center( child: CheckboxListTile( value: _value, selected:true,// 默认文字是否高亮 @@ -48,22 +50,24 @@ class _CheckboxListTileStateDefault extends State { activeColor: Colors.red, // 选中此复选框时要使用的颜色 ), ), - new Center( - child: new CheckboxListTile( + Center( + child: CheckboxListTile( value: isChecks[0], - title: new Text('选项1'), + title: Text('选项1'), activeColor: _value ? Colors.red : Colors.green, controlAffinity: ListTileControlAffinity.platform, onChanged: (bool){ - setState(() { - isChecks[0]=bool; - }); + if(mounted) { + setState(() { + isChecks[0] = bool; + }); + } }), ), - new Center( - child: new CheckboxListTile( + Center( + child: CheckboxListTile( value: isChecks[1], - title: new Text('选项2'), + title: Text('选项2'), activeColor: _value ? Colors.red : Colors.green, controlAffinity: ListTileControlAffinity.platform, onChanged: (bool){ @@ -72,10 +76,10 @@ class _CheckboxListTileStateDefault extends State { }); }), ), - new Center( - child: new CheckboxListTile( + Center( + child: CheckboxListTile( value: isChecks[2], - title: new Text('选项3'), + title: Text('选项3'), activeColor: _value ? Colors.red : Colors.green, controlAffinity: ListTileControlAffinity.platform, onChanged: (bool){ @@ -84,10 +88,10 @@ class _CheckboxListTileStateDefault extends State { }); }), ), - new Center( - child: new CheckboxListTile( + Center( + child: CheckboxListTile( value: isChecks[3], - title: new Text('选项4'), + title: Text('选项4'), activeColor: _value ? Colors.red : Colors.green, controlAffinity: ListTileControlAffinity.platform, onChanged: (bool){ diff --git a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart index f065e227..a3548e56 100644 --- a/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart +++ b/lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart @@ -61,7 +61,7 @@ class _DemoState extends State { */ Widget allCheckboxs(BuildContext context, _DemoState that) { return Container( - //padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), + //padding: EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0), child: Column( //mainAxisSize: MainAxisSize.max, children:[ @@ -79,7 +79,7 @@ Widget allCheckboxs(BuildContext context, _DemoState that) { * 带align的text * */ Widget textAlignBar(String txt) { - return new Align( + return Align( alignment: FractionalOffset.centerLeft, child: Column( children: [ diff --git a/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart b/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart index 3d36b522..60d2ab24 100644 --- a/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart +++ b/lib/widgets/elements/Form/Input/TextField/text_field_demo.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; class DefaultTextField extends StatelessWidget { @override Widget build(BuildContext context) { - return new Container( + return Container( padding: const EdgeInsets.all(30.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, //文本是起始端对齐 @@ -29,7 +29,7 @@ class CustomTextField extends StatelessWidget { @override Widget build(BuildContext context) { - return new Container( + return Container( padding: const EdgeInsets.all(30.0), child: TextField( keyboardType: TextInputType.number, diff --git a/lib/widgets/elements/Form/Radio/Radio/demo.dart b/lib/widgets/elements/Form/Radio/Radio/demo.dart index 93022062..d55dca91 100644 --- a/lib/widgets/elements/Form/Radio/Radio/demo.dart +++ b/lib/widgets/elements/Form/Radio/Radio/demo.dart @@ -22,27 +22,27 @@ class _Demo extends State { } Widget build(BuildContext context) { return ( - new Container( + Container( alignment: Alignment.centerLeft, - child: new Column( + child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - new Radio( + Radio( value: 1, groupValue: groupValue,//当value和groupValue一致的时候则选中 onChanged: (T){ onChange(T); } ), - new Radio( + Radio( value: 2, groupValue: groupValue, onChanged: (T){ onChange(T); } ), - new Radio( + Radio( value: 3, groupValue: groupValue, onChanged: (T){ diff --git a/lib/widgets/elements/Form/Radio/Radio/index.dart b/lib/widgets/elements/Form/Radio/Radio/index.dart index 0d8a280b..df090dec 100644 --- a/lib/widgets/elements/Form/Radio/Radio/index.dart +++ b/lib/widgets/elements/Form/Radio/Radio/index.dart @@ -11,28 +11,19 @@ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; import 'demo.dart'; const content1 = """ -# Radio +### **简介** > material design 风格的单选按钮 Radio widget 代表表单中的单选按钮, 当groupValue = value时代表组件被选中。 在表单中, 单选按钮是表示一组互斥选项按钮中的一个。当一个按钮被选中,之前选中的按钮就变为非选中的。 -# 示例显示 -"""; - -const content2 = """ -# 基本用法 - -``` -new Radio( - value: value, - groupValue: groupValue, //当value和groupValue一致的时候则选中 - onChanged: (T){ - onChange(T); - } - -```` +### **基本用法** +以下是Radio的属性主产明 +- activeColor → Color - 激活时的颜色。 +- groupValue → T - 选择组的值。 +- onChanged → ValueChanged - 改变时触发。 +- value → T - 单选的值。 """; class Demo extends StatefulWidget { static const String routeName = '/element/Form/Radio/index'; @@ -46,7 +37,6 @@ class _DemoState extends State { contentList: [ content1, new RadioADemo(), - content2 ], title: 'Radio', docUrl: 'https://docs.flutter.io/flutter/material/Radio-class.html', diff --git a/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart b/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart index 50ceb3c1..1b3ba679 100644 --- a/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart +++ b/lib/widgets/elements/Form/Radio/RadioListTile/demo.dart @@ -24,7 +24,7 @@ class _Demo extends State { } Widget build(BuildContext context) { - return new Column( + return Column( children: [ RadioListTile( title: const Text('A'), diff --git a/lib/widgets/elements/Form/Radio/RadioListTile/index.dart b/lib/widgets/elements/Form/Radio/RadioListTile/index.dart index b7a32288..a9c5f2ae 100644 --- a/lib/widgets/elements/Form/Radio/RadioListTile/index.dart +++ b/lib/widgets/elements/Form/Radio/RadioListTile/index.dart @@ -11,28 +11,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; import 'demo.dart'; const content1 = """ -# RadioListTile +### **简介** > material design 风格的单选按钮附加文字label 点击文字的同时 , 将会出发 Radio的点击效果. 功能同 @Radio -# 示例显示 -"""; - -const content2 = """ -# 基本用法 - -``` dart -RadioListTile( - title: const Text('title'), - value: value, - groupValue: groupValue, - onChanged:onChange -) -``` - +### **基本用法** +Radio是单选框,和checkbox一样本身不包含状态,当groupValue = value时代表选中状态 """; class Demo extends StatefulWidget { static const String routeName = '/element/Form/RadioListTile/index'; @@ -45,8 +32,8 @@ class _DemoState extends State { return WidgetDemo( contentList: [ content1, - new DemoA(), - content2 + new DemoA() + ], title: 'RadioListTile', docUrl: 'https://docs.flutter.io/flutter/material/RadioListTile-class.html', diff --git a/lib/widgets/elements/Form/Slider/Slider/demo.dart b/lib/widgets/elements/Form/Slider/Slider/demo.dart index b7e009f2..c7f48dab 100644 --- a/lib/widgets/elements/Form/Slider/Slider/demo.dart +++ b/lib/widgets/elements/Form/Slider/Slider/demo.dart @@ -16,7 +16,7 @@ class SliderDemo extends StatefulWidget { class _Demo extends State { double value = 0.0; Widget build(BuildContext context) { - return new Slider( + return Slider( value: value,//实际进度的位置 inactiveColor: Colors.black12,//进度中不活动部分的颜色 label: 'value: $value', @@ -43,8 +43,8 @@ class SliderThemeDemo extends StatefulWidget { class _SliderThemeDemo extends State { double value = 0.0; Widget build(BuildContext context) { - return new Container( - child: new SliderTheme( + return Container( + child: SliderTheme( data: SliderTheme.of(context).copyWith( // activeTickMarkColor:Colors.yellowAccent, activeTrackColor: Colors.yellowAccent,//实际进度的颜色 @@ -52,21 +52,21 @@ class _SliderThemeDemo extends State { thumbColor: Colors.black,//滑块中心的颜色 inactiveTrackColor:Colors.red,//默 认进度条的颜色 valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 - valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + valueIndicatorTextStyle: TextStyle(//提示气泡里面文字的样式 color: Colors.white, ), inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 overlayColor: Colors.pink,//滑块边缘颜色 ), - child: new Container( + child: Container( width: 340.0, margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), - child: new Row( + child: Row( children: [ - new Text('0.0'), - new Expanded( + Text('0.0'), + Expanded( flex: 1, - child: new Slider( + child: Slider( value: value, label: '$value', divisions: 10, @@ -79,7 +79,7 @@ class _SliderThemeDemo extends State { max: 100.0, ), ), - new Text('100.0'), + Text('100.0'), ], ), ), diff --git a/lib/widgets/elements/Form/Slider/Slider/index.dart b/lib/widgets/elements/Form/Slider/Slider/index.dart index 42392f36..7cde20f0 100644 --- a/lib/widgets/elements/Form/Slider/Slider/index.dart +++ b/lib/widgets/elements/Form/Slider/Slider/index.dart @@ -49,19 +49,19 @@ const contentB = ''' 如果当前Slider样式 无法满足需求, 可以通过 ** SliderTheme ** 定制复杂样式 ``` -new SliderTheme( + SliderTheme( data: SliderTheme.of(context).copyWith( activeTrackColor: Colors.yellowAccent,//实际进度的颜色 inactiveTickMarkColor:Colors.black thumbColor: Colors.black,//滑块中心的颜色 inactiveTrackColor:Colors.red,//默 认进度条的颜色 valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 - valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + valueIndicatorTextStyle: TextStyle(//提示气泡里面文字的样式 color: Colors.white, ), inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 overlayColor: Colors.pink,//滑块边缘颜色 - child: new Slider() + child: Slider() ) ``` diff --git a/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart b/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart index 0fb46382..19c15f6a 100644 --- a/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart +++ b/lib/widgets/elements/Form/Slider/SliderTheme/demo.dart @@ -17,8 +17,8 @@ class SliderThemeDemo extends StatefulWidget { class _SliderThemeDemo extends State { double value = 0.0; Widget build(BuildContext context) { - return new Container( - child: new SliderTheme( + return Container( + child: SliderTheme( data: SliderTheme.of(context).copyWith( // activeTickMarkColor:Colors.yellowAccent, activeTrackColor: Colors.yellowAccent,//实际进度的颜色 @@ -26,21 +26,21 @@ class _SliderThemeDemo extends State { thumbColor: Colors.black,//滑块中心的颜色 inactiveTrackColor:Colors.red,//默 认进度条的颜色 valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 - valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + valueIndicatorTextStyle: TextStyle(//提示气泡里面文字的样式 color: Colors.white, ), inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 overlayColor: Colors.pink,//滑块边缘颜色 ), - child: new Container( + child: Container( width: 340.0, margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), - child: new Row( + child: Row( children: [ - new Text('0.0'), - new Expanded( + Text('0.0'), + Expanded( flex: 1, - child: new Slider( + child: Slider( value: value, label: '$value', divisions: 10, @@ -53,7 +53,7 @@ class _SliderThemeDemo extends State { max: 100.0, ), ), - new Text('100.0'), + Text('100.0'), ], ), ), diff --git a/lib/widgets/elements/Form/Slider/SliderTheme/index.dart b/lib/widgets/elements/Form/Slider/SliderTheme/index.dart index b930fef2..d40d9172 100644 --- a/lib/widgets/elements/Form/Slider/SliderTheme/index.dart +++ b/lib/widgets/elements/Form/Slider/SliderTheme/index.dart @@ -24,7 +24,7 @@ const contentA = ''' 基本属性参考以下代码: ``` -new SliderTheme( + SliderTheme( data: SliderThemeData({ @required Color activeTrackColor, @required Color inactiveTrackColor, @@ -67,7 +67,7 @@ class _Demo extends State { codeUrl: 'elements/Form/Slider/SliderTheme/demo.dart', contentList: [ contentA, - new SliderThemeDemo(), + SliderThemeDemo(), ], docUrl: 'https://docs.flutter.io/flutter/material/SliderTheme-class.html', ); diff --git a/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart b/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart index 0fb46382..19c15f6a 100644 --- a/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart +++ b/lib/widgets/elements/Form/Slider/SliderThemeData/demo.dart @@ -17,8 +17,8 @@ class SliderThemeDemo extends StatefulWidget { class _SliderThemeDemo extends State { double value = 0.0; Widget build(BuildContext context) { - return new Container( - child: new SliderTheme( + return Container( + child: SliderTheme( data: SliderTheme.of(context).copyWith( // activeTickMarkColor:Colors.yellowAccent, activeTrackColor: Colors.yellowAccent,//实际进度的颜色 @@ -26,21 +26,21 @@ class _SliderThemeDemo extends State { thumbColor: Colors.black,//滑块中心的颜色 inactiveTrackColor:Colors.red,//默 认进度条的颜色 valueIndicatorColor: Colors.blue,//提示进度的气派的背景色 - valueIndicatorTextStyle: new TextStyle(//提示气泡里面文字的样式 + valueIndicatorTextStyle: TextStyle(//提示气泡里面文字的样式 color: Colors.white, ), inactiveTickMarkColor:Colors.blue,//divisions对进度线分割后 断续线中间间隔的颜色 overlayColor: Colors.pink,//滑块边缘颜色 ), - child: new Container( + child: Container( width: 340.0, margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0), - child: new Row( + child: Row( children: [ - new Text('0.0'), - new Expanded( + Text('0.0'), + Expanded( flex: 1, - child: new Slider( + child: Slider( value: value, label: '$value', divisions: 10, @@ -53,7 +53,7 @@ class _SliderThemeDemo extends State { max: 100.0, ), ), - new Text('100.0'), + Text('100.0'), ], ), ), diff --git a/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart b/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart index 43e7b736..51b8ffd5 100644 --- a/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart +++ b/lib/widgets/elements/Form/Slider/SliderThemeData/index.dart @@ -10,7 +10,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; import 'demo.dart'; - +import 'package:flutter/cupertino.dart'; const contentA = ''' ### **简介** > SliderTheme的data修饰属性 **SliderThemeData** @@ -21,30 +21,6 @@ const contentA = ''' > 配合SliderTheme, 修改slider组件各个部件的样式, 参照@Slider的各组件命名, 修改各部件样式 -构造函数如下 -```` -const SliderThemeData({ - @required Color activeTrackColor, - @required Color inactiveTrackColor, - @required Color disabledActiveTrackColor, - @required Color disabledInactiveTrackColor, - @required Color activeTickMarkColor, - @required Color inactiveTickMarkColor, - @required Color disabledActiveTickMarkColor, - @required Color disabledInactiveTickMarkColor, - @required Color thumbColor, - @required Color disabledThumbColor, - @required Color overlayColor, - @required Color valueIndicatorColor, - @required SliderComponentShape thumbShape, - @required SliderComponentShape valueIndicatorShape, - @required ShowValueIndicator showValueIndicator, - @required TextStyle valueIndicatorTextStyle -}) - -```` - -### **基本实例** '''; @@ -56,14 +32,14 @@ class Demo extends StatefulWidget { } class _Demo extends State { - + Color c = CupertinoColors.activeBlue; Widget build(BuildContext context) { return WidgetDemo( title: 'SliderThemeData', codeUrl: 'elements/Form/Slider/SliderThemeData/demo.dart', contentList: [ contentA, - new SliderThemeDemo() + SliderThemeDemo() ], docUrl: 'https://docs.flutter.io/flutter/material/SliderThemeData-class.html', ); diff --git a/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart index b2eeff2a..2ce4aa3b 100644 --- a/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart +++ b/lib/widgets/elements/Form/Switch/AnimatedSwitcher/index.dart @@ -39,7 +39,7 @@ class _Demo extends State { codeUrl: 'elements/Form/Switch/AnimatedSwitcher/demo.dart', contentList: [ contentA, - new AnimatedSwitcherDemo() + AnimatedSwitcherDemo() ], docUrl: '', ); diff --git a/lib/widgets/elements/Form/Switch/Switch/demo.dart b/lib/widgets/elements/Form/Switch/Switch/demo.dart index 283b6f33..ad4b88bf 100644 --- a/lib/widgets/elements/Form/Switch/Switch/demo.dart +++ b/lib/widgets/elements/Form/Switch/Switch/demo.dart @@ -18,7 +18,7 @@ class SwitchDemo extends StatefulWidget { class _Demo extends State { bool check = false; Widget build(BuildContext context) { - return new Switch( + return Switch( value: this.check, onChanged: (bool val) { this.setState(() { @@ -36,7 +36,7 @@ class SwitchHighDemo extends StatefulWidget { class _SwitchHighDemo extends State { bool check = false; Widget build(BuildContext context) { - return new Switch.adaptive( + return Switch.adaptive( value: this.check, activeColor: Colors.blue, // 激活时原点颜色 onChanged: (bool val) { @@ -56,7 +56,7 @@ class SwitchTypesDemo extends StatefulWidget { class _SwitchTypesDemo extends State { bool check = false; Widget build(BuildContext context) { - return new Switch( + return Switch( value: this.check, activeTrackColor:Colors.green, inactiveThumbColor: Colors.black, diff --git a/lib/widgets/elements/Form/Switch/Switch/index.dart b/lib/widgets/elements/Form/Switch/Switch/index.dart index afd390e7..826e3233 100644 --- a/lib/widgets/elements/Form/Switch/Switch/index.dart +++ b/lib/widgets/elements/Form/Switch/Switch/index.dart @@ -17,22 +17,8 @@ const contentA = ''' ### **基本用法** +通常用于Bool值参数的设置. -``` -new Switch( - value: isChecked, - activeColor: Colors.blue, // 激活时原点颜色 - onChanged: (bool val) { - this.setState(() { - this.isChecked = !this.isChecked; - }); - }, -) -``` - -### **基本实例** - -@SwitchDemo '''; @@ -60,18 +46,6 @@ const contentC = ''' '''; -const contentD = ''' - -``` -activeTrackColor:Colors.green, -inactiveThumbColor: Colors.black, -inactiveThumbImage: NetworkImage('https://flutter.io/images/homepage/header-illustration.png'), -activeThumbImage: NetworkImage( - "https://flutter.io/images/homepage/screenshot-2.png" -), -inactiveTrackColor: Colors.yellow, -``` -'''; class Demo extends StatefulWidget { static const String routeName = 'elements/Form/Switch/Switch'; @@ -83,15 +57,14 @@ class _Demo extends State { Widget build(BuildContext context) { return WidgetDemo( title: 'Switch', - codeUrl: 'elements/Form/Switch/Switch/demo.dart', + codeUrl: '/elements/Form/Switch/Switch/demo.dart', contentList: [ contentA, SwitchDemo(), contentB, SwitchHighDemo(), contentC, - SwitchTypesDemo(), - contentD + SwitchTypesDemo() ], docUrl: 'https://docs.flutter.io/flutter/material/Switch-class.html', ); diff --git a/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart b/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart index a80109b7..a0dde440 100644 --- a/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart +++ b/lib/widgets/elements/Form/Switch/SwitchListTile/demo.dart @@ -18,7 +18,7 @@ class SwitchListTileDemo extends StatefulWidget { class _Demo extends State { bool _lights = false; Widget build(BuildContext context) { - return new SwitchListTile( + return SwitchListTile( title: const Text('Lights'), value: _lights, onChanged: (bool value) { setState(() { _lights = value; }); }, diff --git a/lib/widgets/elements/Form/Text/RichText/index.dart b/lib/widgets/elements/Form/Text/RichText/index.dart index e4a31632..ab676420 100644 --- a/lib/widgets/elements/Form/Text/RichText/index.dart +++ b/lib/widgets/elements/Form/Text/RichText/index.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; -// import 'package:flutter_go/widgets/elements/Form/Text/RichText/demo.dart'; -import './demo.dart'; - +import 'package:flutter_go/widgets/elements/Form/Text/RichText/demo.dart'; const String intro = """ ### **简介** @@ -13,33 +11,13 @@ const String intro = """ 无论是Text或者Text.rich, 查看源代码发现. 都是由RichText构建出来 -RichText的源码展示 -``` -// Text 源码 -@override - Widget build(BuildContext context) { - ... - Widget result = RichText( - ... - - style: effectiveTextStyle, - text: data, - children: textSpan != null ? [textSpan] : null, - ), - ); - ... - return result; - } -``` -### **基本实例** +### **基本用法** +我们可以让一段文本通过使用不同的TextSpan显示不同的样式。比如我们让"Hello beautiful world"的每个单词都显示不同的样式. """; -const String diff = """ -"""; - class Demo extends StatefulWidget { static const String routeName = '/element/Form/Text/RichText'; _Demo createState() => _Demo(); diff --git a/lib/widgets/elements/Form/Text/index.dart b/lib/widgets/elements/Form/Text/index.dart index c5881c6d..2c57ccca 100644 --- a/lib/widgets/elements/Form/Text/index.dart +++ b/lib/widgets/elements/Form/Text/index.dart @@ -1,16 +1,16 @@ import '../../../../model/widget.dart'; import "package:flutter/material.dart"; -import 'RichText/index.dart' as RichText; +// import 'RichText/index.dart' as RichText; import 'Text/index.dart' as Text; List widgetPoints = [ - WidgetPoint( - name: 'RichText', - routerName: RichText.Demo.routeName, - buildRouter: (BuildContext context) => RichText.Demo(), - ), + // WidgetPoint( + // name: 'RichText', + // routerName: RichText.Demo.routeName, + // buildRouter: (BuildContext context) => RichText.Demo(), + // ), WidgetPoint( name: 'Text', routerName: Text.Demo.routeName, diff --git a/lib/widgets/elements/Frame/Align/Align/demo.dart b/lib/widgets/elements/Frame/Align/Align/demo.dart index 288c1003..775df13e 100644 --- a/lib/widgets/elements/Frame/Align/Align/demo.dart +++ b/lib/widgets/elements/Frame/Align/Align/demo.dart @@ -18,13 +18,13 @@ class AlignAlignment extends StatelessWidget { @override Widget build(BuildContext context) { - return new Container( + return Container( color: Color(0xffd81b60), width: 90.0, height: 50.0, - child: new Align( + child: Align( alignment: status, - child: new Text( + child: Text( dec, style: TextStyle(fontSize: 12.0, color: Color(0xffffffff)), ), @@ -45,10 +45,10 @@ class AlignFactor extends StatelessWidget { @override Widget build(BuildContext context) { - return new Container( - margin: new EdgeInsets.only(top: 10.0, bottom: 10.0), + return Container( + margin: EdgeInsets.only(top: 10.0, bottom: 10.0), color: Color(0xffd81b60), - child: new Align( + child: Align( alignment: status, widthFactor: wFactor, heightFactor: hFactor, diff --git a/lib/widgets/elements/Frame/Align/Align/index.dart b/lib/widgets/elements/Frame/Align/Align/index.dart index 46432a8f..e28149a9 100644 --- a/lib/widgets/elements/Frame/Align/Align/index.dart +++ b/lib/widgets/elements/Frame/Align/Align/index.dart @@ -40,10 +40,10 @@ class _DemoState extends State { } Column _alignCreate() { - return new Column( + return Column( children: [ SizedBox(height: 10.0), - new Row( + Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ AlignAlignment(Alignment.center, 'center'), @@ -51,7 +51,7 @@ class _DemoState extends State { ], ), SizedBox(height: 10.0), - new Row( + Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ AlignAlignment(Alignment.centerRight, 'centerRight'), @@ -60,7 +60,7 @@ class _DemoState extends State { ], ), SizedBox(height: 10.0), - new Row( + Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ AlignAlignment(Alignment.topLeft, 'topLeft'), @@ -71,11 +71,11 @@ class _DemoState extends State { SizedBox(height: 10.0), MarkdownBody(data: _flatText1), Container( - margin: new EdgeInsets.only(top: 20.0, bottom: 20.0), + margin: EdgeInsets.only(top: 20.0, bottom: 20.0), color: Color(0xffe91e63), - child: new Align( + child: Align( alignment: Alignment.topLeft, - child: new Text( + child: Text( "Align", style: TextStyle(color: Color(0xffffffff)), ), diff --git a/lib/widgets/elements/Frame/Box/ConstrainedBox/demo.dart b/lib/widgets/elements/Frame/Box/ConstrainedBox/demo.dart index 90995e77..73d298eb 100644 --- a/lib/widgets/elements/Frame/Box/ConstrainedBox/demo.dart +++ b/lib/widgets/elements/Frame/Box/ConstrainedBox/demo.dart @@ -29,12 +29,12 @@ class ConstrainedBoxCreate extends StatelessWidget { maxWidth: 300.0, maxHeight: 50.0, ), - child: new Container( + child: Container( margin: const EdgeInsets.only(left: 20.0, right: 20.0), //child 宽高超过制定限制范围失效,效果宽/高=100/20区域 width: currWidth, height: 250.0, - child: new Text( + child: Text( describe, style: TextStyle(color: Colors.white), ), diff --git a/lib/widgets/elements/Frame/Box/DecoratedBox/demo.dart b/lib/widgets/elements/Frame/Box/DecoratedBox/demo.dart index 8539ead3..da157373 100644 --- a/lib/widgets/elements/Frame/Box/DecoratedBox/demo.dart +++ b/lib/widgets/elements/Frame/Box/DecoratedBox/demo.dart @@ -21,7 +21,7 @@ class DecoratedBoxCreate extends StatelessWidget { decoration: BoxDecoration( color: const Color(0xff7c94b6), //设置图片内容 - image: new DecorationImage( + image: DecorationImage( fit: BoxFit.cover, image: ExactAssetImage('assets/images/food01.jpeg')), //外宽边框,可以不设置 @@ -46,7 +46,7 @@ class DecoratedBoxCreateTwo extends StatelessWidget { decoration: BoxDecoration( color: const Color(0xff7c94b6), //设置图片内容 - image: new DecorationImage( + image: DecorationImage( fit: BoxFit.cover, image: ExactAssetImage('assets/images/food01.jpeg')), //根据传入的不同大小,呈现图片效弧度不同, @@ -67,7 +67,7 @@ class DecoratedBoxCreateShape extends StatelessWidget { position: DecorationPosition.background, decoration: BoxDecoration( color: const Color(0xff7c94b6), - image: new DecorationImage( + image: DecorationImage( fit: BoxFit.cover, image: ExactAssetImage('assets/images/food01.jpeg')), border: Border.all( diff --git a/lib/widgets/elements/Frame/Box/DecoratedBox/index.dart b/lib/widgets/elements/Frame/Box/DecoratedBox/index.dart index 79f4073d..0432f432 100644 --- a/lib/widgets/elements/Frame/Box/DecoratedBox/index.dart +++ b/lib/widgets/elements/Frame/Box/DecoratedBox/index.dart @@ -45,7 +45,7 @@ class _DemoState extends State { } Column _decoratedBoxCreate() { - return new Column( + return Column( children: [ Container( height: 100.0, diff --git a/lib/widgets/elements/Frame/Box/Fittedbox/demo.dart b/lib/widgets/elements/Frame/Box/FittedBox/demo.dart similarity index 93% rename from lib/widgets/elements/Frame/Box/Fittedbox/demo.dart rename to lib/widgets/elements/Frame/Box/FittedBox/demo.dart index 108ad98d..b137ae97 100644 --- a/lib/widgets/elements/Frame/Box/Fittedbox/demo.dart +++ b/lib/widgets/elements/Frame/Box/FittedBox/demo.dart @@ -15,11 +15,11 @@ class FittedBoxDefault extends StatelessWidget { final BoxFit curfit; final String dec; - FittedBoxDefault({Key key, this.curfit, this.dec}); + FittedBoxDefault({Key key, this.curfit, this.dec}); @override Widget build(BuildContext context) { - return new Column( + return Column( children: [ Container( //外部有位置约束,内部大小设定失效,保持和外部约束一致 diff --git a/lib/widgets/elements/Frame/Box/Fittedbox/index.dart b/lib/widgets/elements/Frame/Box/FittedBox/index.dart similarity index 85% rename from lib/widgets/elements/Frame/Box/Fittedbox/index.dart rename to lib/widgets/elements/Frame/Box/FittedBox/index.dart index ef624730..e707f34d 100644 --- a/lib/widgets/elements/Frame/Box/Fittedbox/index.dart +++ b/lib/widgets/elements/Frame/Box/FittedBox/index.dart @@ -1,4 +1,3 @@ - /** * Author: xiaojia.dxj * Date: 2019-01-08 @@ -9,7 +8,7 @@ */ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; -import './demo.dart' as fittedBox; +import './demo.dart'; const String Text0 = """ ### **FittedBox** @@ -53,18 +52,16 @@ class _DemoState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - fittedBox.FittedBoxDefault( - /** - * 设置child写入布局期间分配空间 - */ + FittedBoxDefault( + //设置child写入布局期间分配空间 curfit: BoxFit.contain, dec: 'contain', ), - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.fill, dec: 'fill', ), - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.cover, dec: 'cover', ), @@ -76,11 +73,11 @@ class _DemoState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.fitHeight, dec: 'fitHeight', ), - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.fitWidth, dec: 'fitWidth', ), @@ -92,11 +89,11 @@ class _DemoState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.none, dec: 'none', ), - fittedBox.FittedBoxDefault( + FittedBoxDefault( curfit: BoxFit.scaleDown, dec: 'scaleDown', ), diff --git a/lib/widgets/elements/Frame/Box/OverflowBox/demo.dart b/lib/widgets/elements/Frame/Box/OverflowBox/demo.dart index f7357a02..30127141 100644 --- a/lib/widgets/elements/Frame/Box/OverflowBox/demo.dart +++ b/lib/widgets/elements/Frame/Box/OverflowBox/demo.dart @@ -10,11 +10,11 @@ class OverflowBoxDefault extends StatelessWidget { OverflowBoxDefault( {Key key, - this.curmaxHeight, - this.curmaxWidth, - this.curWidth, - this.curHeight, - this.curalignment}) + this.curmaxHeight, + this.curmaxWidth, + this.curWidth, + this.curHeight, + this.curalignment}) : super(key: key); @override @@ -25,18 +25,18 @@ class OverflowBoxDefault extends StatelessWidget { //设置最大宽,高 maxWidth: curmaxWidth, maxHeight: curmaxHeight, - /** - * 调整child位置 - */ + + //调整child位置 alignment: curalignment, child: Container( - /** - * widget宽高大于overflowBox设置的最大,以overflowbox设置的最大宽高为限制, - * 小于overflowBox 设置的最大限度,子widget能够完全显示 - * * */ + //widget宽高大于overflowBox设置的最大,以overflowbox设置的最大宽高为限制, + //小于overflowBox 设置的最大限度,子widget能够完全显示 height: curHeight, width: curWidth, - child: Text("$curmaxWidth * $curmaxHeight",style: TextStyle(color: Colors.white),), + child: Text( + "$curmaxWidth * $curmaxHeight", + style: TextStyle(color: Colors.white), + ), color: Color(0xfff48fb1), ), ); diff --git a/lib/widgets/elements/Frame/Box/OverflowBox/index.dart b/lib/widgets/elements/Frame/Box/OverflowBox/index.dart index a67669a8..d7aa8502 100644 --- a/lib/widgets/elements/Frame/Box/OverflowBox/index.dart +++ b/lib/widgets/elements/Frame/Box/OverflowBox/index.dart @@ -76,7 +76,10 @@ class _DemoState extends State { ), ), SizedBox(height: 20), - SizedBox(height: 50,child: Text("宽高都大于最大限制"),), + SizedBox( + height: 50, + child: Text("宽高都大于最大限制"), + ), Container( width: 100.0, height: 100.0, @@ -90,7 +93,6 @@ class _DemoState extends State { curalignment: Alignment.center, ), ), - ], ); } diff --git a/lib/widgets/elements/Frame/Box/RenderBox/demo.dart b/lib/widgets/elements/Frame/Box/RenderBox/demo.dart deleted file mode 100644 index 9c1a7565..00000000 --- a/lib/widgets/elements/Frame/Box/RenderBox/demo.dart +++ /dev/null @@ -1,22 +0,0 @@ -import 'package:flutter/material.dart'; - -class RenderBoxDemo extends StatefulWidget { - _RenderBoxDemoState createState() => _RenderBoxDemoState(); -} - -class _RenderBoxDemoState extends State { - @override - Widget build(BuildContext context) { - return Container( - // child: RenderFoo(), - ); - } -} - -class RenderFoo extends RenderBox { - @override - bool get hasSize => super.hasSize; - - @override - BoxConstraints get constraints => super.constraints; -} diff --git a/lib/widgets/elements/Frame/Box/RenderBox/index.dart b/lib/widgets/elements/Frame/Box/RenderBox/index.dart deleted file mode 100644 index d0f3d6a2..00000000 --- a/lib/widgets/elements/Frame/Box/RenderBox/index.dart +++ /dev/null @@ -1,62 +0,0 @@ -/* - * @Author: xiaojia.dxj - * @Date: 2019-01-08 15:56:26 - * @Last Modified by: xiaojia.dxj - * @Last Modified time: 2019-01-08 15:56:26 - */ -import 'package:flutter/material.dart'; -import 'package:flutter_go/components/widget_demo.dart'; - -const String _Text = ''' -### **简介** -> BoxConstraints为抽象类,我们可以使用BoxConstraints,一个不可边的约束布局,renderBox布局 -- 一个尺寸尊重一个BoxConstraints,当且仅当,以下关系式的成立: -minWidth <= Size.width <= maxWidth -minHeight <= Size.height <= maxHeight -约束本身必须满足这些关系: - -0.0 <= minWidth <= maxWidth <= double.infinity -0.0 <= minHeight <= maxHeight <= double.infinity -double.infinity是每个约束的合法值。 -'''; - -class Demo extends StatefulWidget { - static const String routeName = '/element/Frame/Box/RenderBox'; - - _DemoState createState() => _DemoState(); -} - -class _DemoState extends State { - @override - Widget build(BuildContext context) { - return WidgetDemo( - title: 'Table', - codeUrl: 'elements/Frame/Box/RenderBox/demo.dart', - contentList: [ - _Text, - _sizeBoxCreate(), - ], - docUrl: 'https://docs.flutter.io/flutter/widgets/RenderBox-class.html', - ); - } - - Column _sizeBoxCreate() { - return new Column( - children: [ - /** - * Immutable layout constraints for RenderBox layout. - */ - SizedBox( - width: 900.0, - height: 50.0, - child: const Card( - child: Text( - 'SizedBox', - textAlign: TextAlign.center, - ), - color: Color(0xFFEF5350)), - ), - ], - ); - } -} diff --git a/lib/widgets/elements/Frame/Box/SizeBox/index.dart b/lib/widgets/elements/Frame/Box/SizeBox/index.dart index e3f05461..2e5b1382 100644 --- a/lib/widgets/elements/Frame/Box/SizeBox/index.dart +++ b/lib/widgets/elements/Frame/Box/SizeBox/index.dart @@ -28,15 +28,15 @@ class _DemoState extends State { } Column _sizeBoxCreate() { - return new Column( + return Column( children: [ - new Text("SizedBox", + Text("SizedBox", textAlign: TextAlign.right, style: TextStyle( fontSize: 28.0, fontWeight: FontWeight.bold, )), - new Row( + Row( children: [ sizeBox.SizeBoxDefault(), SizedBox( diff --git a/lib/widgets/elements/Frame/Box/SizedOverflowBox/demo.dart b/lib/widgets/elements/Frame/Box/SizedOverflowBox/demo.dart index 034f9bc4..f69a3c0d 100644 --- a/lib/widgets/elements/Frame/Box/SizedOverflowBox/demo.dart +++ b/lib/widgets/elements/Frame/Box/SizedOverflowBox/demo.dart @@ -7,10 +7,7 @@ class SizeOverflowBoxDefault extends StatelessWidget { final String text; SizeOverflowBoxDefault( - {Key key, - this.curSizeWidth, - this.curSizeHeight, - this.text}) + {Key key, this.curSizeWidth, this.curSizeHeight, this.text}) : super(key: key); @override @@ -23,7 +20,7 @@ class SizeOverflowBoxDefault extends StatelessWidget { color: Color(0xfff06292), width: 50.0, height: 50.0, - child: new Text( + child: Text( text, style: TextStyle(color: Colors.white), ), @@ -36,8 +33,7 @@ class SizeBoxDefault extends StatelessWidget { final double curWidth; final double curHeight; - SizeBoxDefault({Key key, this.curHeight, this.curWidth}) - : super(key: key); + SizeBoxDefault({Key key, this.curHeight, this.curWidth}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/lib/widgets/elements/Frame/Box/SizedOverflowBox/index.dart b/lib/widgets/elements/Frame/Box/SizedOverflowBox/index.dart index 961981d4..78fbba7a 100644 --- a/lib/widgets/elements/Frame/Box/SizedOverflowBox/index.dart +++ b/lib/widgets/elements/Frame/Box/SizedOverflowBox/index.dart @@ -6,7 +6,7 @@ */ import 'package:flutter/material.dart'; import 'package:flutter_go/components/widget_demo.dart'; -import './demo.dart' as sizeBox; +import './demo.dart'; // const String _Text = """### **SizeBox简介** // > 常用的一个控件,设置具体尺寸。 @@ -53,47 +53,47 @@ class _DemoState extends State { } Column _sizedOverflowBoxCreate() { - return new Column( + return Column( children: [ - sizeBox.SizeBoxDefault( + SizeBoxDefault( curWidth: 200.0, curHeight: 50.0, ), SizedBox(height: 20.0), Container( - margin: new EdgeInsets.only(top: 10.0), + margin: EdgeInsets.only(top: 10.0), color: Color(0xffd81b60), width: 200.0, height: 50.0, ), Container( - margin: new EdgeInsets.only(top: 10.0), + margin: EdgeInsets.only(top: 10.0), color: Color(0xffd81b60), alignment: Alignment.topCenter, width: 200.0, height: 50.0, - child: sizeBox.SizeOverflowBoxDefault( + child: SizeOverflowBoxDefault( text: "SizeBox", ), ), Container( - margin: new EdgeInsets.only(top: 10.0), + margin: EdgeInsets.only(top: 10.0), color: Color(0xffd81b60), width: 200.0, height: 50.0, - child: sizeBox.SizeOverflowBoxDefault( + child: SizeOverflowBoxDefault( text: "box", curSizeWidth: 100.0, curSizeHeight: 20.0, ), ), Container( - margin: new EdgeInsets.only(top: 10.0), + margin: EdgeInsets.only(top: 10.0), color: Color(0xffd81b60), width: 200.0, height: 50.0, alignment: Alignment.center, - child: sizeBox.SizeOverflowBoxDefault( + child: SizeOverflowBoxDefault( text: "box", curSizeWidth: 100.0, curSizeHeight: 20.0, diff --git a/lib/widgets/elements/Frame/Box/TextBox/demo.dart b/lib/widgets/elements/Frame/Box/TextBox/demo.dart deleted file mode 100644 index 8b137891..00000000 --- a/lib/widgets/elements/Frame/Box/TextBox/demo.dart +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/widgets/elements/Frame/Box/TextBox/index.dart b/lib/widgets/elements/Frame/Box/TextBox/index.dart deleted file mode 100644 index f47298ee..00000000 --- a/lib/widgets/elements/Frame/Box/TextBox/index.dart +++ /dev/null @@ -1,49 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_go/components/widget_demo.dart'; - -const String _Text = """### **TextBox简介** -> 是一个包含一段文本的矩形 -- 它与rect类似,不过包含一个固定的TextDirection。 -- sizebox的width,heigh为null,child自身设置 -### **属性** -> width:宽 -> height:高 -- ex:200*50 sizebox -"""; - -class Demo extends StatefulWidget { - static const String routeName = '/element/Frame/Box/TextBox'; - - _DemoState createState() => _DemoState(); -} - -class _DemoState extends State { - @override - Widget build(BuildContext context) { - return WidgetDemo( - title: 'TextBox', - codeUrl: 'elements/Frame/Box/TextBox/demo.dart', - contentList: [ - _Text, - _creatTexbox(), - ], - docUrl: 'https://docs.flutter.io/flutter/dart-ui/TextBox-class.html', - ); - } -} - -Column _creatTexbox() { - return Column( - children: [ - // Text("TextBox ",textDirection: new TextBox.fo,), - Container( - // child: TextBox.fromLTRB(270.0, 180.0, 1360.0, 730.0,TextDirection.rtl), - - ) - -// centerSlice: new Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0), - - - ], - ); -} diff --git a/lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart b/lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart index 9f171c45..0a62c64f 100644 --- a/lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart +++ b/lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart @@ -6,7 +6,7 @@ class UnconstrainedBoxDemo extends StatelessWidget { return UnconstrainedBox( constrainedAxis: Axis.vertical, textDirection: TextDirection.rtl, - child: new Row( + child: Row( children: [ Container( width: 100.0, diff --git a/lib/widgets/elements/Frame/Box/index.dart b/lib/widgets/elements/Frame/Box/index.dart index 0e61d53c..48399ea2 100644 --- a/lib/widgets/elements/Frame/Box/index.dart +++ b/lib/widgets/elements/Frame/Box/index.dart @@ -5,7 +5,6 @@ import 'ConstrainedBox/index.dart' as ConstrainedBox; import 'DecoratedBox/index.dart' as DecoratedBox; import 'SizeBox/index.dart' as SizeBox; import 'SizedOverflowBox/index.dart' as SizedOverflowBox; -import 'TextBox/index.dart' as TextBox; import 'UnconstrainedBox/index.dart' as UnconstrainedBox; import 'OverflowBox/index.dart' as OverflowBox; import 'FittedBox/index.dart' as FittedBox; @@ -33,11 +32,6 @@ List widgetPoints = [ routerName: SizedOverflowBox.Demo.routeName, buildRouter: (BuildContext context) => SizedOverflowBox.Demo(), ), - WidgetPoint( - name: 'TextBox', - routerName: TextBox.Demo.routeName, - buildRouter: (BuildContext context) => TextBox.Demo(), - ), WidgetPoint( name: 'UnconstrainedBox', routerName: UnconstrainedBox.Demo.routeName, diff --git a/lib/widgets/elements/Frame/Expanded/Expanded/expanded_demo.dart b/lib/widgets/elements/Frame/Expanded/Expanded/expanded_demo.dart index a789e353..24075553 100644 --- a/lib/widgets/elements/Frame/Expanded/Expanded/expanded_demo.dart +++ b/lib/widgets/elements/Frame/Expanded/Expanded/expanded_demo.dart @@ -13,57 +13,57 @@ class ExpandedDemo extends StatelessWidget { return Column( children: [ Text('Expanded'), - Row(children: [ - RaisedButton( + Row(children: [ + RaisedButton( onPressed: () { print('点击红色按钮事件'); }, color: const Color(0xffcc0000), - child: Text('红色按钮',style: txtColor,), + child: Text('红色按钮',style: txtColor,), ), - Expanded( + Expanded( flex: 1,//flex用来设置当前可用空间的占优比 - child: RaisedButton( + child: RaisedButton( onPressed: () { print('点击黄色按钮事件'); }, color: const Color(0xfff1c232), - child: Text('黄色按钮',style: txtColor,), + child: Text('黄色按钮',style: txtColor,), ), ), - RaisedButton( + RaisedButton( onPressed: () { print('点击粉色按钮事件'); }, color: const Color(0xffea9999), - child: Text('粉色按钮',style: txtColor,), + child: Text('粉色按钮',style: txtColor,), ), ]), Text('Flexible'), - Row(children: [ - RaisedButton( + Row(children: [ + RaisedButton( onPressed: () { print('点击红色按钮事件'); }, color: const Color(0xffcc0000), - child: Text('红色按钮',style: txtColor,), + child: Text('红色按钮',style: txtColor,), ), - Flexible( + Flexible( flex: 1, - child: RaisedButton( + child: RaisedButton( onPressed: () { print('点击黄色按钮事件'); }, color: const Color(0xfff1c232), - child: Text('黄色按钮',style: txtColor,), + child: Text('黄色按钮',style: txtColor,), ), ), - RaisedButton( + RaisedButton( onPressed: () { print('点击粉色按钮事件'); }, color: const Color(0xffea9999), - child: Text('粉色按钮',style: txtColor,), + child: Text('粉色按钮',style: txtColor,), ), ]), ], diff --git a/lib/widgets/elements/Frame/Layout/Column/demo.dart b/lib/widgets/elements/Frame/Layout/Column/demo.dart index e94c8a78..c61234cf 100644 --- a/lib/widgets/elements/Frame/Layout/Column/demo.dart +++ b/lib/widgets/elements/Frame/Layout/Column/demo.dart @@ -13,33 +13,31 @@ class ColumnDefault extends StatelessWidget { @override Widget build(BuildContext context) { return Column( - /** - * - MainAxisAlignment.spaceEvenly/spaceAround/spaceBetween, - - spaceEvenly:将主轴方向空白区域均分,使得children之间空间相等,包括首尾childre - - spaceAround:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre的空白部分为一半 - - spaceBetween:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre靠近收尾,没有空细逢 + /// - MainAxisAlignment.spaceEvenly/spaceAround/spaceBetween, + /// - spaceEvenly:将主轴方向空白区域均分,使得children之间空间相等,包括首尾childre + /// - spaceAround:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre的空白部分为一半 + /// - spaceBetween:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre靠近收尾,没有空细逢 + + /// - MainAxisAlignment.start/end/center, + /// - start:将children放置在主轴起点方向 + /// - end:将children放置在主轴末尾方向 + /// - center:将children放置在主轴中间方向 - - MainAxisAlignment.start/end/center, - - start:将children放置在主轴起点方向 - - end:将children放置在主轴末尾方向 - - center:将children放置在主轴中间方向 - */ mainAxisAlignment: MainAxisAlignment.center, - /** - * > mainAxisSize 属性 - - 一行的高度是有mainAxisSize属性控制,默认是max - - mainAxisSize: MainAxisSize.min,一行的宽度是child传入的约束 - - mainAxisSize: MainAxisSize.max,一行的宽度的最大宽度是传入的约束。 - > mainAxisAlignment属性 - */ - mainAxisSize: MainAxisSize.max, - /** - * - crossAxisAlignment: CrossAxisAlignment.center/end/start, - - 即,根据设定的位置交叉对齐 - - center/end/start: children在交叉轴上居中/末端/起点 对齐展示 - - stretch:让children填满交叉轴方向 - - baseline:在交叉轴方向,使得于这个baseline对齐,如果主轴是垂直的,那么这个值是当作开始 - */ + + /// > mainAxisSize 属性 + /// - 一行的高度是有mainAxisSize属性控制,默认是max + /// - mainAxisSize: MainAxisSize.min,一行的宽度是child传入的约束 + /// - mainAxisSize: MainAxisSize.max,一行的宽度的最大宽度是传入的约束。 + /// > mainAxisAlignment属性 + + /// mainAxisSize: MainAxisSize.max, + ///- crossAxisAlignment: CrossAxisAlignment.center/end/start, + /// - 即,根据设定的位置交叉对齐 + /// - center/end/start: children在交叉轴上居中/末端/起点 对齐展示 + /// - stretch:让children填满交叉轴方向 + /// - baseline:在交叉轴方向,使得于这个baseline对齐,如果主轴是垂直的,那么这个值是当作开始 + children: [ Container( color: Color(0xfffce4ec), diff --git a/lib/widgets/elements/Frame/Layout/Row/demo.dart b/lib/widgets/elements/Frame/Layout/Row/demo.dart index 8beb078c..489f491b 100644 --- a/lib/widgets/elements/Frame/Layout/Row/demo.dart +++ b/lib/widgets/elements/Frame/Layout/Row/demo.dart @@ -10,27 +10,24 @@ import 'package:flutter/widgets.dart'; * Describle:Row */ class RowMainAxisAlignment extends StatelessWidget { - /* - * > mainAxisAlignment属性 - * - MainAxisAlignment.spaceEvenly/spaceAround/spaceBetween, - - spaceEvenly:将主轴方向空白区域均分,使得children之间空间相等,包括首尾childre - - spaceAround:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre的空白部分为一半 - - spaceBetween:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre靠近收尾,没有空细逢 - * - MainAxisAlignment.start/end/center, - - start:将children放置在主轴起点方向 - - end:将children放置在主轴末尾方向 - - center:将children放置在主轴中间方向 - */ + ///> mainAxisAlignment属性 + /// - MainAxisAlignment.spaceEvenly/spaceAround/spaceBetween, + /// - spaceEvenly:将主轴方向空白区域均分,使得children之间空间相等,包括首尾childre + /// - spaceAround:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre的空白部分为一半 + /// - spaceBetween:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre靠近收尾,没有空细逢 + /// - MainAxisAlignment.start/end/center, + /// - start:将children放置在主轴起点方向 + /// - end:将children放置在主轴末尾方向 + /// - center:将children放置在主轴中间方向 + final MainAxisAlignment status; - /* - * > CrossAxisAlignment 属性 - - crossAxisAlignment: CrossAxisAlignment.center/end/start, - - 即,根据设定的位置交叉对齐 - - center/end/start: children在交叉轴上居中/末端/起点 对齐展示 - - stretch:让children填满交叉轴方向 - - baseline:在交叉轴方向,使得于这个baseline对齐,如果主轴是垂直的,那么这个值是当作开始 - */ + /// > CrossAxisAlignment 属性 + /// - crossAxisAlignment: CrossAxisAlignment.center/end/start, + /// - 即,根据设定的位置交叉对齐 + /// - center/end/start: children在交叉轴上居中/末端/起点 对齐展示 + /// - stretch:让children填满交叉轴方向 + /// - baseline:在交叉轴方向,使得于这个baseline对齐,如果主轴是垂直的,那么这个值是当作开始 final CrossAxisAlignment crossStatus; @@ -38,7 +35,7 @@ class RowMainAxisAlignment extends StatelessWidget { @override Widget build(BuildContext context) { - return new Row( + return Row( mainAxisAlignment: status, children: [ Container( @@ -66,29 +63,29 @@ class RowLayoutCreate extends StatelessWidget { @override Widget build(BuildContext context) { - return new Row( + return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( - margin: new EdgeInsets.only(top: 20.0, bottom: 20.0), + margin: EdgeInsets.only(top: 20.0, bottom: 20.0), color: Color(0xfffce4ec), width: 60.0, height: 50.0, ), Container( - margin: new EdgeInsets.only(top: 20.0, bottom: 20.0), + margin: EdgeInsets.only(top: 20.0, bottom: 20.0), color: Color(0xfff8bbd0), width: 60.0, height: 50.0, ), Container( - margin: new EdgeInsets.only(top: 20.0, bottom: 20.0), + margin: EdgeInsets.only(top: 20.0, bottom: 20.0), color: Color(0xfff48fb1), width: 60.0, height: 50.0, ), Container( - margin: new EdgeInsets.only(top: 20.0, bottom: 20.0), + margin: EdgeInsets.only(top: 20.0, bottom: 20.0), color: Color(0xfff06292), width: 60.0, height: 50.0, diff --git a/lib/widgets/elements/Frame/Layout/Row/index.dart b/lib/widgets/elements/Frame/Layout/Row/index.dart index a93001df..10b64b27 100644 --- a/lib/widgets/elements/Frame/Layout/Row/index.dart +++ b/lib/widgets/elements/Frame/Layout/Row/index.dart @@ -49,7 +49,7 @@ class _DemoState extends State { } Column _rowCreate() { - return new Column( + return Column( children: [ RowLayoutCreate(), Row( diff --git a/lib/widgets/elements/Frame/Spacing/SliverPadding/sliverpadding_demo.dart b/lib/widgets/elements/Frame/Spacing/SliverPadding/sliverpadding_demo.dart index 27bd4a9f..07920611 100644 --- a/lib/widgets/elements/Frame/Spacing/SliverPadding/sliverpadding_demo.dart +++ b/lib/widgets/elements/Frame/Spacing/SliverPadding/sliverpadding_demo.dart @@ -49,12 +49,12 @@ class SliverPaddingDemo extends StatelessWidget { @override Widget build(BuildContext context) { - return new CustomScrollView( + return CustomScrollView( shrinkWrap: true, slivers: [ - new SliverPadding( + SliverPadding( padding: const EdgeInsets.fromLTRB(50.0,10.0,20.0,0.0), - sliver: new SliverList( + sliver: SliverList( delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return _buildItem(context, products[index]); diff --git a/lib/widgets/elements/Frame/Stack/IndexedStack/demo.dart b/lib/widgets/elements/Frame/Stack/IndexedStack/demo.dart index bcf289cc..b2ac819c 100644 --- a/lib/widgets/elements/Frame/Stack/IndexedStack/demo.dart +++ b/lib/widgets/elements/Frame/Stack/IndexedStack/demo.dart @@ -12,7 +12,7 @@ import 'package:flutter/material.dart'; class StackDefault extends StatelessWidget { final int currIndex; - const StackDefault( this.currIndex) : super(); + const StackDefault(this.currIndex) : super(); @override Widget build(BuildContext context) { @@ -23,14 +23,14 @@ class StackDefault extends StatelessWidget { // backgroundImage: AssetImage('images/timg.jpeg'), // radius: 100.0, // ), -// new Image.asset( +// Image.asset( // 'images/timg.jpeg', // width: 600.0, // height: 240.0, // fit: BoxFit.cover, // ), CircleAvatar( - backgroundColor: new Color(0xfff48fb1), + backgroundColor: Color(0xfff48fb1), radius: 40.0, ), Container( @@ -54,34 +54,34 @@ class StackDefault extends StatelessWidget { class StackIndex extends StatelessWidget { final int currIndex; - const StackIndex( this.currIndex) : super(); + const StackIndex(this.currIndex) : super(); @override Widget build(BuildContext context) { return IndexedStack( index: currIndex, children: [ - new Icon( + Icon( Icons.update, size: 40.0, color: Color(0xffe91e63), ), - new Icon( + Icon( Icons.access_alarm, size: 40.0, color: Color(0xffe91e63), ), - new Icon( + Icon( Icons.add_alarm, size: 40.0, color: Color(0xffe91e63), ), - new Icon( + Icon( Icons.access_time, size: 40.0, color: Color(0xffe91e63), ), - new Icon( + Icon( Icons.alarm_off, size: 40.0, color: Color(0xffe91e63), diff --git a/lib/widgets/elements/Frame/Stack/IndexedStack/index.dart b/lib/widgets/elements/Frame/Stack/IndexedStack/index.dart index a0103001..da1d3aec 100644 --- a/lib/widgets/elements/Frame/Stack/IndexedStack/index.dart +++ b/lib/widgets/elements/Frame/Stack/IndexedStack/index.dart @@ -38,8 +38,7 @@ class _DemoState extends State { return WidgetDemo( title: 'IndexedStack', // desc: _desc, - codeUrl: - 'elements/Frame/Stack/IndexedStack/demo.dart', + codeUrl: 'elements/Frame/Stack/IndexedStack/demo.dart', docUrl: 'https://docs.flutter.io/flutter/widgets/IndexedStack-class.html', contentList: [ _stackText0, @@ -50,20 +49,20 @@ class _DemoState extends State { } Column _indexedStackCreate() { - return new Column( + return Column( children: [ SizedBox( height: 10.0, ), - new Row( + Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Container( - color: new Color(0xffe91e63), + color: Color(0xffe91e63), child: StackDefault(0), ), Container( - color: new Color(0xffe91e63), + color: Color(0xffe91e63), child: StackDefault(1), ) ], @@ -71,7 +70,7 @@ class _DemoState extends State { SizedBox( height: 10.0, ), - new Row( + Row( mainAxisAlignment: MainAxisAlignment.center, children: [ StackIndex(0), @@ -91,7 +90,7 @@ class _DemoState extends State { onPressed: () { _indexAdd(); }, - icon: new Icon(Icons.adb), + icon: Icon(Icons.adb), label: Text("点击这里")), StackIndex(currIndex) ], diff --git a/lib/widgets/elements/Frame/Stack/Stack/demo.dart b/lib/widgets/elements/Frame/Stack/Stack/demo.dart index 4af0df05..43c2404d 100644 --- a/lib/widgets/elements/Frame/Stack/Stack/demo.dart +++ b/lib/widgets/elements/Frame/Stack/Stack/demo.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; * LastUpdateTime: 2018/11/22 * LastUpdateBy: xj.deng * - * Describle:Align描述 + * Describle:stack描述 */ class StackDefault extends StatelessWidget { const StackDefault() : super(); @@ -16,19 +16,19 @@ class StackDefault extends StatelessWidget { Widget build(BuildContext context) { return Column( children: [ - new Stack( + Stack( //fit :定义如何设置non-positioned节点尺寸 fit: StackFit.loose, overflow: Overflow.clip, textDirection: TextDirection.ltr, alignment: Alignment.center, children: [ - new Container( - color: new Color(0xfff48fb1), + Container( + color: Color(0xfff48fb1), width: 100.0, height: 50.0, ), - new Text("stack demo", + Text("stack demo", textDirection: TextDirection.ltr, style: TextStyle( fontSize: 20.0, @@ -49,22 +49,22 @@ class StackDefault2 extends StatelessWidget { Widget build(BuildContext context) { return Column( children: [ - new Stack( + Stack( //fit :定义如何设置non-positioned节点尺寸 fit: StackFit.loose, overflow: Overflow.clip, textDirection: TextDirection.ltr, alignment: Alignment.center, children: [ - new Text("stack demo", + Text("stack demo", textDirection: TextDirection.ltr, style: TextStyle( fontSize: 20.0, fontWeight: FontWeight.bold, letterSpacing: 5.0, color: Colors.white)), - new Container( - color: new Color(0xfff48fb1), + Container( + color: Color(0xfff48fb1), width: 100.0, height: 50.0, ), @@ -80,32 +80,32 @@ class StackPositioned extends StatelessWidget { @override Widget build(BuildContext context) { - return new Stack( + return Stack( alignment: Alignment.center, children: [ - new Positioned( - child: new Icon( + Positioned( + child: Icon( Icons.monetization_on, size: 40.0, color: Colors.yellow[300], )), - new Positioned( + Positioned( left: 40.0, - child: new Icon( + child: Icon( Icons.monetization_on, size: 40.0, color: Colors.yellow[600], )), - new Positioned( + Positioned( left: 60.0, - child: new Icon( + child: Icon( Icons.monetization_on, size: 40.0, color: Colors.yellow[600], )), - new Positioned( + Positioned( left: 80.0, - child: new Icon( + child: Icon( Icons.monetization_on, size: 40.0, color: Colors.yellow[600], @@ -120,12 +120,12 @@ class StackLayout extends StatelessWidget { @override Widget build(BuildContext context) { - return new Stack( + return Stack( overflow: Overflow.visible, alignment: const Alignment(0.2, 0.6), children: [ CircleAvatar( - backgroundColor: new Color(0xfff48fb1), + backgroundColor: Color(0xfff48fb1), radius: 140.0, ), Container( diff --git a/lib/widgets/elements/Frame/Stack/Stack/index.dart b/lib/widgets/elements/Frame/Stack/Stack/index.dart index f25d059b..66c61516 100644 --- a/lib/widgets/elements/Frame/Stack/Stack/index.dart +++ b/lib/widgets/elements/Frame/Stack/Stack/index.dart @@ -35,30 +35,28 @@ class Demo extends StatefulWidget { } class _DemoState extends State { - @override Widget build(BuildContext context) { return WidgetDemo( title: 'Stack', - codeUrl: - 'elements/Frame/Stack/Stack/demo.dart', + codeUrl: 'elements/Frame/Stack/Stack/demo.dart', docUrl: 'https://docs.flutter.io/flutter/widgets/Stack-class.html', contentList: [ _stackText0, _stackCreate(), _stackText1, - new Container( + Container( width: 300.0, height: 100.0, - margin: new EdgeInsets.only(top: 10.0, bottom: 10.0), - color: new Color(0xffe91e63), + margin: EdgeInsets.only(top: 10.0, bottom: 10.0), + color: Color(0xffe91e63), child: StackPositioned(), ), _stackText2, - new Container( + Container( width: 200.0, height: 200.0, - color: new Color(0xffe91e63), + color: Color(0xffe91e63), child: StackLayout(), ), ], @@ -66,18 +64,18 @@ class _DemoState extends State { } Column _stackCreate() { - return new Column( + return Column( children: [ Column( children: [ - new Container( - margin: new EdgeInsets.only(top: 10.0, bottom: 10.0), + Container( + margin: EdgeInsets.only(top: 10.0, bottom: 10.0), width: 300.0, height: 100.0, color: Color(0xffe91e63), child: StackDefault(), ), - new Container( + Container( width: 300.0, height: 100.0, color: Color(0xffe91e63), diff --git a/lib/widgets/elements/Frame/index.dart b/lib/widgets/elements/Frame/index.dart index ba235725..5ebd4a55 100644 --- a/lib/widgets/elements/Frame/index.dart +++ b/lib/widgets/elements/Frame/index.dart @@ -1,4 +1,4 @@ -import 'spacing/index.dart' as Spacing; +import 'Spacing/index.dart' as Spacing; import 'Expanded/index.dart' as Expanded; // import 'Axis/index.dart' as Axis; diff --git a/lib/widgets/elements/Media/Canvas/Canvas/demo.dart b/lib/widgets/elements/Media/Canvas/Canvas/demo.dart new file mode 100644 index 00000000..a33f58d2 --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/Canvas/demo.dart @@ -0,0 +1,321 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2019/1/20 + * Time: 上午11:34 + * email: zhu.yan@alibaba-inc.com + * tartget: Canvas 的示例 + */ +import 'package:flutter/material.dart'; +import 'dart:ui'; +import 'dart:ui' as ui; +import 'dart:typed_data'; +import 'dart:math'; +import 'package:flutter/services.dart' show rootBundle; + +CustomPaint graph; +var image; + +class CustomViewPage extends StatefulWidget { + + final String type; + CustomViewPage({this.type='drawLine'}) : super(); + + @override + State createState() => CustomViewPageState(); +} + +class CustomViewPageState extends State + with SingleTickerProviderStateMixin { + + static Future getImage(String asset) async { + ByteData data = await rootBundle.load(asset); + Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List()); + FrameInfo fi = await codec.getNextFrame(); + return fi.image; + } + + @override + void initState() { + super.initState(); + getImage("assets/images/painterImg.jpeg").then((data) { + if (mounted) { + setState(() { + image = data; + }); + } + }); + } + + @override + Widget build(BuildContext context) { + graph = CustomPaint( + painter: DrawPainter(type:widget.type) + ); + return Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.width * 0.6, + margin: EdgeInsets.all(10.0), + //padding: EdgeInsets.all(10.0), + child: graph + //child:Center(child: graph) + ); + } + + + @override + void reassemble() { + super.reassemble(); + } + + @override + void dispose() { + super.dispose(); + } +} + +///新建类继承于CustomPainter并且实现CustomPainter里面的paint()和shouldRepaint方法 +class DrawPainter extends CustomPainter { + Paint painter; + final type; + + DrawPainter ({this.type}){ + // Paint painter = Paint() + // ..color = Colors.blueAccent //画笔颜色 + // ..strokeCap = StrokeCap.round //画笔笔触类型 + // ..isAntiAlias = true //是否启动抗锯齿 + // ..blendMode = BlendMode.exclusion //颜色混合模式 + // ..style = PaintingStyle.fill //绘画风格,默认为填充 + // ..colorFilter = ColorFilter.mode(Colors.blueAccent,BlendMode.exclusion) //颜色渲染模式,一般是矩阵效果来改变的,但是flutter中只能使用颜色混合模式 + // ..maskFilter = MaskFilter.blur(BlurStyle.inner, 3.0) //模糊遮罩效果,flutter中只有这个 + // ..filterQuality = FilterQuality.high //颜色渲染模式的质量 + // ..strokeWidth = 15.0 ;//画笔的宽度 + + painter = new Paint() + ..color = Colors.blueAccent + ..strokeCap = StrokeCap.round + ..isAntiAlias = true + ..strokeWidth = 5.0 + ..filterQuality = FilterQuality.high + ..style = PaintingStyle.stroke; + } + ///Flutter中负责View绘制的地方,使用传递来的canvas和size即可完成对目标View的绘制 + + @override + void paint(Canvas canvas, Size size) { + switch(type) { + case 'drawPoints': + const List points1 = [Offset(20.0, 0.0), Offset(100.0, 50.0), Offset(150.0, 0.0),Offset(300.0, 0.0)]; + const List points2 = [Offset(20.0, 100.0), Offset(100.0, 100.0), Offset(150.0, 100.0), Offset(300.0, 100.0)]; + const List points3 = [Offset(20.0, 150.0), Offset(100.0, 150.0), Offset(150.0, 180.0), Offset(300.0, 150.0)]; + //绘制点 + canvas.drawPoints( + ///PointMode的枚举类型有三个,points(点),lines(线,隔点连接),polygon(线,相邻连接) + PointMode.points, + points1, + painter..color = Colors.redAccent // 这里可以追加修改 painter 属性 + ..strokeWidth = 10.0 + ); + canvas.drawPoints( + ///PointMode的枚举类型有三个,points(点),lines(线,隔点连接),polygon(线,相邻连接) + PointMode.lines, + points2, + painter..color = Colors.orange // 这里可以追加修改 painter 属性 + ..strokeWidth = 10.0 + ); + canvas.drawPoints( + ///PointMode的枚举类型有三个,points(点),lines(线,隔点连接),polygon(线,相邻连接) + PointMode.polygon, + points3, + painter..color = Colors.blue // 这里可以追加修改 painter 属性 + ..strokeWidth = 10.0 + ); + break; + case 'drawLine': + //绘制直线 + canvas.drawLine(Offset(20.0, 0.0), Offset(size.width*0.8, 200), painter ..color = Colors.redAccent); + break; + case 'rawCircle': + //绘制圆 参数(圆心,半径,画笔) + canvas.drawCircle( + Offset(size.width/2, 100.0), + 100.0, + painter + ..color = Colors.greenAccent + ..style = PaintingStyle.stroke //绘画风格改为stroke + ); + break; + case 'drawOval': + // 绘制椭圆 + // 使用左上和右下角坐标来确定矩形的大小和位置,椭圆是在这个矩形之中内切的形状 + Rect rect1 = Rect.fromPoints(Offset(0.0, 0.0), Offset(size.width, 200.0)); + canvas.drawOval(rect1, painter ..color = Colors.indigo); + break; + case 'drawArc': + // 绘制圆弧 + // Rect来确认圆弧的位置,还需要开始的弧度、结束的弧度、是否使用中心点绘制、以及paint弧度 + const PI = 3.1415926; + Rect rect1 = Rect.fromCircle(center: Offset(20, 50.0), radius: 100.0); + canvas.drawArc(rect1, 0.0, PI / 2, false, painter ..color = Colors.pink); + + Rect rect2 = Rect.fromCircle(center: Offset(size.width*0.6, 50.0), radius: 100.0); + canvas.drawArc(rect2, 0.0, PI / 2, true, painter ..color = Colors.deepPurple); + break; + case 'drawRRect': + /// fromPoints(Offset a, Offset b) + /// 使用左上和右下角坐标来确定矩形的大小和位置 + /// fromCircle({ Offset center, double radius }) + /// 使用圆的圆心点坐标和半径和确定外切矩形的大小和位置 + /// fromLTRB(double left, double top, double right, double bottom) + /// 使用矩形左边的X坐标、矩形顶部的Y坐标、矩形右边的X坐标、矩形底部的Y坐标来确定矩形的大小和位置 + /// fromLTWH(double left, double top, double width, double height) + /// 使用矩形左边的X坐标、矩形顶部的Y坐标矩形的宽高来确定矩形的大小和位置 + // 用Rect构建一个边长50,中心点坐标为50,100的矩形 + Rect rect1 = Rect.fromCircle(center: Offset(80.0, 100.0), radius: 50.0); + Rect rect2 = Rect.fromCircle(center: Offset(250.0, 100.0), radius: 50.0); + // 根据上面的矩形,构建一个圆角矩形 + RRect rrect1 = RRect.fromRectAndRadius(rect1, Radius.circular(0.0)); + canvas.drawRRect(rrect1, painter); + RRect rrect2 = RRect.fromRectAndRadius(rect2, Radius.circular(20.0)); + canvas.drawRRect(rrect2, painter); + break; + case 'drawDRRect': + //绘制两个矩形 + Rect rect1 = Rect.fromCircle(center: Offset(size.width/2, 100.0), radius: 60.0); + Rect rect2 = Rect.fromCircle(center: Offset(size.width/2, 100.0), radius: 40.0); + //分别绘制外部圆角矩形和内部的圆角矩形 + RRect outer = RRect.fromRectAndRadius(rect1, Radius.circular(30.0)); + RRect inner = RRect.fromRectAndRadius(rect2, Radius.circular(5.0)); + canvas.drawDRRect(outer, inner, painter ..color = Colors.lime); + break; + case 'drawImage': + // canvas.drawImage(image, Offset(0.0, 0.0), painter); + final src = Rect.fromLTWH(0.0, 0.0, 684.0, 442.0); + final dst = Rect.fromLTWH(0.0, 0.0, size.width, size.height); + canvas.drawImageRect(image, src, dst, painter); + break; + case 'drawStar': + var rect = Offset.zero & size; + /// 背景颜色 + canvas.drawRect(rect, Paint()..color = Color(0xFF000000)); + /// 绘制星形 + canvas.drawPath(MathTools().regularStarPath(5, 30, Offset(50.0, 50.0)), painter..color = Colors.red); + /// 绘制多边形 + canvas.save();// save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作 + canvas.translate(0, 100); + canvas.scale(1.2,1.2); + canvas.drawPath(MathTools().nStarPath(4, 30, 30, Offset(40.0, 50.0)), painter); + canvas.restore();// 用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响 + /// 绘制旋转星形 + canvas.save();// save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作 + canvas.translate(150, 50); + canvas.rotate(50 * pi / 180); + canvas.drawPath(MathTools().regularStarPath(5, 30, Offset(0,0)), painter..color = Colors.green); + canvas.restore();// 用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响 + /// 绘制变形星形 + canvas.save();// save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作 + canvas.translate(80, 100); + canvas.skew(0.5,0.2); + canvas.drawPath(MathTools().regularStarPath(6, 30,Offset(50,50)), painter..color = Colors.lime); + canvas.restore();// 用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响 + + /// 绘制matrix星形 + canvas.translate(250, 0); + Float64List matrix = Float64List.fromList(const [ + // careful, this is in _column_-major order + 0.7, -0.7, 0.0, 0.0, + 0.7, 0.7, 0.0, 0.0, + 0.7, 0.0, 1.0, 0.0, + -70.697, 98.057, 0.0, 1.0, + ]); + canvas.transform(matrix); + canvas.drawPath(MathTools().regularStarPath(5, 30,Offset(50,50)), painter..color = Colors.blue); + + break; + } + //canvas.drawColor(Colors.red, BlendMode.colorDodge); + } + + ///控制自定义View是否需要重绘的,返回false代表这个View在构建完成后不需要重绘。 + @override + bool shouldRepaint(CustomPainter oldDelegate) { + return false; + } +} + +class MathTools { + static MathTools _mathTools; + static bool _flag; + + factory MathTools(){ + if (_flag == null) { + _flag = true; + } + if (_flag) { + _mathTools = new MathTools._internal(); + _flag = false; + } + return _mathTools; + } + MathTools._internal(); + /// + ///画正n角星的路径: + /// + ///@param num 角数 + ///@param R 外接圆半径 + ///@return 画正n角星的路径 + /// + Path regularStarPath(int num, double R, Offset xy) { + double degA, degB; + if (num % 2 == 1) { + //奇数和偶数角区别对待 + degA = 360 / num / 2 / 2; + degB = 180 - degA - 360 / num / 2; + } else { + degA = 360 / num / 2; + degB = 180 - degA - 360 / num / 2; + } + double r = R * sin(_rad(degA)) / sin(_rad(degB)); + return nStarPath(num, R, r, xy); + } + + /// + ///画正n边形的路径 + /// + ///@param num 边数 + ///@param R 外接圆半径 + ///@return 画正n边形的路径 + /// + Path regularPolygonPath(int num, double R, Offset xy) { + double r = R * cos(_rad(360 / num / 2)); //!!一点解决 + return nStarPath(num, R, r, xy); + } + + /// + ///n角星路径 + /// + ///@param num 几角星 + ///@param R 外接圆半径 + ///@param r 内接圆半径 + ///@return n角星路径 + /// + Path nStarPath(int num, double R, double r, Offset xy) { + Path path = new Path(); + double perDeg = 360 / num; //尖角的度数 + double degA = perDeg / 2 / 2; + double degB = 360 / (num - 1) / 2 - degA / 2 + degA; + + path.moveTo(cos(_rad(degA)) * R + xy.dx, (-sin(_rad(degA)) * R + xy.dy)); + for (int i = 0; i < num; i++) { + path.lineTo( + cos(_rad(degA + perDeg * i)) * R + xy.dx, -sin(_rad(degA + perDeg * i)) * R + xy.dy); + path.lineTo( + cos(_rad(degB + perDeg * i)) * r + xy.dx, -sin(_rad(degB + perDeg * i)) * r + xy.dy); + } + path.close(); + return path; + } + double _rad(double deg) { + return deg * pi / 180; + } +} diff --git a/lib/widgets/elements/Media/Canvas/Canvas/index.dart b/lib/widgets/elements/Media/Canvas/Canvas/index.dart new file mode 100644 index 00000000..3e6cda7e --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/Canvas/index.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_go/components/widget_demo.dart'; +import './demo.dart' as demoBoxs; + +const Text = ''' +### **简介** +> 用于操作图形的界面; +- canvas 对象用于创建图片对象,这些对象本身可以与 SceneBuilder 一起用于构建场景; +'''; +const Text1 = ''' +### **基本用法** +- 以下是绘制点,线,面的基本用法 +'''; + +const Text2 = ''' +> 绘制点 +- 绘制点有三种模式, points(点),lines(线,隔点连接),polygon(线,相邻连接) +'''; + +const Text3 = ''' +> 绘制直线 +'''; + +const Text4 = ''' +> 绘制圆 +'''; + +const Text5 = ''' +> 绘制椭圆 +- 使用左上和右下角坐标来确定矩形的大小和位置,椭圆是在这个矩形之中内切的形状 +'''; + +const Text6 = ''' +> 绘制圆弧 +- Rect 来确认圆弧的位置,还需要开始的弧度、结束的弧度、是否使用中心点绘制、以及 paint 弧度 +'''; + +const Text7 = ''' +> 绘制矩形,圆角矩形 +- 用 Rect构建矩形 +- 根据上面的矩形,构建一个圆角矩形 +'''; + +const Text8 = ''' +> 绘制两个相套矩形 +'''; + +const Text9 = ''' +> 绘制图片到canvas +'''; + +const Text10 = ''' +> 绘制一个星形 +- 它可以使用“平移”、“缩放”、“旋转”、“倾斜”和“变换”方法进行修改; +- 可以使用 clipRect、clipCorrect 和 clipPath 方法进行修改; +- 可以使用由 save、savelayer和 restore 方法管理的堆栈来保存和还原当前的转换和剪辑。 +'''; + +class Demo extends StatefulWidget { + static const String routeName = '/element/Media/Canvas/Canvas'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'Canvas', + codeUrl: 'elements/Media/Canvas/Canvas/demo.dart', + contentList: [ + Text, + Text1, + Text2, + demoBoxs.CustomViewPage(type:'drawPoints'), + Text3, + demoBoxs.CustomViewPage(type:'drawLine'), + Text4, + demoBoxs.CustomViewPage(type:'rawCircle'), + Text5, + demoBoxs.CustomViewPage(type:'drawOval'), + Text6, + demoBoxs.CustomViewPage(type:'drawArc'), + Text7, + demoBoxs.CustomViewPage(type:'drawRRect'), + Text8, + demoBoxs.CustomViewPage(type:'drawDRRect'), + Text9, + demoBoxs.CustomViewPage(type:'drawImage'), + Text10, + demoBoxs.CustomViewPage(type:'drawStar'), + ], + docUrl: 'https://docs.flutter.io/flutter/dart-ui/Canvas-class.html', + ); + } +} diff --git a/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/demo.dart b/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/demo.dart new file mode 100644 index 00000000..5ab481b2 --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/demo.dart @@ -0,0 +1,105 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2019/1/20 + * Time: 上午11:34 + * email: zhu.yan@alibaba-inc.com + * tartget: CircleProgressBarPainter 的示例 + */ +import 'dart:ui'; +import 'package:flutter/material.dart'; + +class CustomViewPage extends StatefulWidget { + @override + State createState() => CustomViewPageState(); +} + +class CustomViewPageState extends State + with SingleTickerProviderStateMixin { + Animation _doubleAnimation; + AnimationController _controller; + CurvedAnimation curvedAnimation; + + @override + void initState() { + super.initState(); + _controller = + AnimationController(vsync: this, duration: Duration(seconds: 2)); + curvedAnimation = + CurvedAnimation(parent: _controller, curve: Curves.decelerate); + _doubleAnimation = Tween(begin: 0.0, end: 360.0).animate(_controller); + + _controller.addListener(() { + if(mounted){ + this.setState(() {}); + } + }); + onAnimationStart(); + } + + @override + Widget build(BuildContext context) { + return Container( + width: 100.0, + height: 100.0, + margin: EdgeInsets.all(8.0), + child: CustomPaint( + child: Center( + child: Text((_doubleAnimation.value / 3.6).round().toString())), + painter: CircleProgressBarPainter(_doubleAnimation.value) + ), + ); + } + + void onAnimationStart() { + _controller.forward(from: 0.0); + } + + @override + void reassemble() { + super.reassemble(); + onAnimationStart(); + } + + @override + void dispose() { + super.dispose(); + _controller.dispose(); + } +} + +class CircleProgressBarPainter extends CustomPainter { + Paint _paintBackground; + Paint _paintFore; + final double pi = 3.1415926; + var jindu; + + CircleProgressBarPainter(this.jindu) { + _paintBackground = Paint() + ..color = Colors.grey + ..strokeCap = StrokeCap.round + ..style = PaintingStyle.stroke + ..strokeWidth = 10.0 + ..isAntiAlias = true; + _paintFore = Paint() + ..color = Colors.red + ..strokeCap = StrokeCap.round + ..style = PaintingStyle.stroke + ..strokeWidth = 10.0 + ..isAntiAlias = true; + } + @override + void paint(Canvas canvas, Size size) { + canvas.drawCircle(Offset(size.width / 2, size.height / 2), size.width / 2,_paintBackground); + Rect rect = Rect.fromCircle( + center: Offset(size.width / 2, size.height / 2), + radius: size.width / 2, + ); + canvas.drawArc(rect, 0.0, jindu * 3.14 / 180, false, _paintFore); + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) { + return false; + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/index.dart b/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/index.dart new file mode 100644 index 00000000..346a4fdd --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/index.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_go/components/widget_demo.dart'; +import './demo.dart' as demoBoxs; + +const Text = ''' +### **简介** +> 操作图形的界面; + +'''; +const Text1 = ''' +### **基本用法** +- canvas + Animation 实现一个 loading 效果; +'''; + + +class Demo extends StatefulWidget { + static const String routeName = '/element/Media/Canvas/CircleProgressBarPainter'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'CircleProgressBarPainter', + codeUrl: 'elements/Media/Canvas/CircleProgressBarPainter/demo.dart', + contentList: [ + Text, + Text1, + demoBoxs.CustomViewPage() + ], + docUrl: 'https://docs.flutter.io/flutter/dart-ui/Canvas-class.html', + ); + } +} + diff --git a/lib/widgets/elements/Media/Canvas/PainterPath/demo.dart b/lib/widgets/elements/Media/Canvas/PainterPath/demo.dart new file mode 100644 index 00000000..150da6b2 --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/PainterPath/demo.dart @@ -0,0 +1,180 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2019/1/20 + * Time: 上午11:34 + * email: zhu.yan@alibaba-inc.com + * tartget: PainterPath 的示例 + */ +import 'dart:ui'; +import 'package:flutter/material.dart'; +CustomPaint graph; + +class CustomViewPage extends StatefulWidget { + + final String type; + CustomViewPage({this.type='simpleline'}) : super(); + + @override + State createState() => CustomViewPageState(); +} + +class CustomViewPageState extends State + with SingleTickerProviderStateMixin { + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + graph = CustomPaint( + painter: DrawPainter(type:widget.type) + ); + return Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.width * 0.6, + margin: EdgeInsets.all(50.0), + //padding: EdgeInsets.all(10.0), + child: graph + //child:Center(child: graph) + ); + } + + + @override + void reassemble() { + super.reassemble(); + } + + @override + void dispose() { + super.dispose(); + } +} + +///新建类继承于CustomPainter并且实现CustomPainter里面的paint()和shouldRepaint方法 +class DrawPainter extends CustomPainter { + Paint painter; + final type; + + DrawPainter ({this.type}){ + // Paint painter = Paint() + // ..color = Colors.blueAccent //画笔颜色 + // ..strokeCap = StrokeCap.round //画笔笔触类型 + // ..isAntiAlias = true //是否启动抗锯齿 + // ..blendMode = BlendMode.exclusion //颜色混合模式 + // ..style = PaintingStyle.fill //绘画风格,默认为填充 + // ..colorFilter = ColorFilter.mode(Colors.blueAccent,BlendMode.exclusion) //颜色渲染模式,一般是矩阵效果来改变的,但是flutter中只能使用颜色混合模式 + // ..maskFilter = MaskFilter.blur(BlurStyle.inner, 3.0) //模糊遮罩效果,flutter中只有这个 + // ..filterQuality = FilterQuality.high //颜色渲染模式的质量 + // ..strokeWidth = 15.0 ;//画笔的宽度 + + painter = new Paint() + ..color = Colors.blueAccent + ..strokeCap = StrokeCap.round + ..isAntiAlias = true + ..strokeWidth = 5.0 + ..style = PaintingStyle.stroke; + } + ///Flutter中负责View绘制的地方,使用传递来的canvas和size即可完成对目标View的绘制 + + @override + void paint(Canvas canvas, Size size) { + //canvas.drawColor(Colors.red, BlendMode.colorDodge); + Path path = new Path(); + drawThisPath(canvas, size, path); + path.close(); + canvas.drawPath(path, painter); + } + + void drawThisPath(Canvas canvas, Size size, Path path,) { + switch(type) { + case 'simpleline': + //新建了一个path,然后将路径起始点移动到坐标(100,100)的位置 + Path path = new Path()..moveTo(0.0, 0.0); + path.lineTo(200.0, 200.0); + canvas.drawPath(path, painter); + break; + case 'polyline': + Path path = new Path()..moveTo(100.0, 10.0); + + path.lineTo(200.0, 150.0); + path.lineTo(100.0, 200.0); + + canvas.drawPath(path, painter); + break; + case 'Besizerline2': + Path path = new Path()..moveTo(0.0, 0.0); + Rect rect1 = Rect.fromCircle(center: Offset(50.0, 100.0), radius: 60.0); + path.arcTo(rect1, 0.0, 3.14, false); + canvas.drawPath(path, painter); + + Rect rect2 = Rect.fromCircle(center: Offset(200.0, 100.0), radius: 60.0); + path.arcTo(rect2, 0.0, 3.14*2, true); + canvas.drawPath(path, painter); + break; + case 'Besizerline3': + var width = size.width; + var height = 300; + Path path = new Path()..moveTo(width / 2, height / 4); + path.cubicTo((width * 6) / 7, height / 9, (width * 13) / 13, + (height * 2) / 5, width / 2, (height * 7) / 12); + canvas.drawPath(path, painter + // ..style = PaintingStyle.fill + // ..color = Colors.red + ); + + Path path2 = new Path(); + path2.moveTo(width / 2, height / 4); + path2.cubicTo(width / 7, height / 9, width / 21, (height * 2) / 5, + width / 2, (height * 7) / 12); + canvas.drawPath(path2, painter); + break; + case 'drawArc': + // 绘制圆弧 + // Rect来确认圆弧的位置,还需要开始的弧度、结束的弧度、是否使用中心点绘制、以及paint弧度 + const PI = 3.1415926; + Rect rect1 = Rect.fromCircle(center: Offset(size.width/2, 0.0), radius: 100.0); + canvas.drawArc(rect1, 0.0, PI / 2, false, painter ..color = Colors.pink); + + Rect rect2 = Rect.fromCircle(center: Offset(size.width/2, 150.0), radius: 100.0); + canvas.drawArc(rect2, 0.0, PI / 2, true, painter ..color = Colors.deepPurple); + break; + case 'drawRRect': + /// fromPoints(Offset a, Offset b) + /// 使用左上和右下角坐标来确定矩形的大小和位置 + /// fromCircle({ Offset center, double radius }) + /// 使用圆的圆心点坐标和半径和确定外切矩形的大小和位置 + /// fromLTRB(double left, double top, double right, double bottom) + /// 使用矩形左边的X坐标、矩形顶部的Y坐标、矩形右边的X坐标、矩形底部的Y坐标来确定矩形的大小和位置 + /// fromLTWH(double left, double top, double width, double height) + /// 使用矩形左边的X坐标、矩形顶部的Y坐标矩形的宽高来确定矩形的大小和位置 + // 用Rect构建一个边长50,中心点坐标为50,100的矩形 + Rect rect1 = Rect.fromCircle(center: Offset(50.0, 50.0), radius: 50.0); + Rect rect2 = Rect.fromCircle(center: Offset(200.0, 50.0), radius: 50.0); + // 根据上面的矩形,构建一个圆角矩形 + RRect rrect1 = RRect.fromRectAndRadius(rect1, Radius.circular(0.0)); + canvas.drawRRect(rrect1, painter); + RRect rrect2 = RRect.fromRectAndRadius(rect2, Radius.circular(20.0)); + canvas.drawRRect(rrect2, painter); + break; + case 'drawDRRect': + //绘制两个矩形 + Rect rect1 = Rect.fromCircle(center: Offset(size.width/2, 100.0), radius: 60.0); + Rect rect2 = Rect.fromCircle(center: Offset(size.width/2, 100.0), radius: 40.0); + //分别绘制外部圆角矩形和内部的圆角矩形 + RRect outer = RRect.fromRectAndRadius(rect1, Radius.circular(30.0)); + RRect inner = RRect.fromRectAndRadius(rect2, Radius.circular(5.0)); + canvas.drawDRRect(outer, inner, painter ..color = Colors.lime); + break; + } + } + + ///控制自定义View是否需要重绘的,返回false代表这个View在构建完成后不需要重绘。 + @override + bool shouldRepaint(CustomPainter oldDelegate) { + return false; + } +} diff --git a/lib/widgets/elements/Media/Canvas/PainterPath/index.dart b/lib/widgets/elements/Media/Canvas/PainterPath/index.dart new file mode 100644 index 00000000..ab64fadb --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/PainterPath/index.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_go/components/widget_demo.dart'; +import './demo.dart' as demoBoxs; + +//const Text = ''' +//### **简介** +//> 在 canvas 上绘制时使用的样式说明; +//- canvas 上的大多数API都使用一个绘画对象来描述用于该操作的样式。 +//'''; +const Text = ''' +### **简介** +> 在 canvas 上绘制的图案; +- canvas + paint 的应用。 +'''; + +const Text1 = ''' +### **基本用法** +- canvas 的 painter 的自定义绘制线的方法; +'''; + +const Text2 = ''' +> 绘制简单直线 +'''; + +const Text3 = ''' +> 绘制折线 +'''; + +const Text4 = ''' +> 二阶贝塞尔曲线 +'''; + +const Text5 = ''' +> 三阶贝塞尔曲线 +'''; + + +class Demo extends StatefulWidget { + static const String routeName = '/element/Media/Canvas/PainterPath'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'PainterPath', + codeUrl: 'elements/Media/Canvas/PainterPath/demo.dart', + contentList: [ + Text, + Text1, + Text2, + demoBoxs.CustomViewPage(type:'simpleline'), + Text3, + demoBoxs.CustomViewPage(type:'polyline'), + Text4, + demoBoxs.CustomViewPage(type:'Besizerline2'), + Text5, + demoBoxs.CustomViewPage(type:'Besizerline3'), + ], + docUrl: 'https://docs.flutter.io/flutter/dart-ui/Paint-class.html', + ); + } +} diff --git a/lib/widgets/elements/Media/Canvas/PainterSketch/demo.dart b/lib/widgets/elements/Media/Canvas/PainterSketch/demo.dart new file mode 100644 index 00000000..c3fbad3b --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/PainterSketch/demo.dart @@ -0,0 +1,221 @@ +/** + * Created with Android Studio. + * User: ryan + * Date: 2019/1/20 + * Time: 上午11:34 + * email: zhu.yan@alibaba-inc.com + * tartget: PainterSketchDome 的示例 + */ + +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; + +class PainterSketchDome extends StatefulWidget { + PainterSketchDome({Key key, this.title}) : super(key: key); + + final String title; + + @override + _PainterSketchDomeState createState() => new _PainterSketchDomeState(); +} + +class _PainterSketchDomeState extends State { + + List lines = []; + List nowPoints = []; + Color nowColor = Colors.redAccent; + + void moveGestureDetector(DragUpdateDetails detail){ + RenderBox box = context.findRenderObject(); + final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置 + Offset p = Offset(xy.dx, xy.dy - 60); + //Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60); + if (mounted) { + setState(() { + nowPoints.add(p); + }); + } + } + + void newGestureDetector(DragStartDetails detail) { + if (nowPoints.length != 0) { + LinePoints l = LinePoints(new List.from(nowPoints), nowColor); + lines.add(l); + nowPoints.clear(); + } + RenderBox box = context.findRenderObject(); + final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置 + Offset p = Offset(xy.dx, xy.dy - 60); + //Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60); + if (mounted) { + setState(() { + nowPoints.add(p); + }); + } + } + + void changeColor (Color c){ + if (nowPoints.length != 0) { + LinePoints l = LinePoints(new List.from(nowPoints), nowColor); + lines.add(l); + } + if (mounted) { + setState(() { + nowPoints.clear(); + nowColor = c; + }); + } + } + + List colors = [ + Colors.redAccent, + Colors.pink, + Colors.greenAccent, + Colors.blueAccent, + Colors.amber, + Colors.purpleAccent, + Colors.deepPurpleAccent, + Colors.lightBlueAccent, + Colors.lightGreenAccent, + Colors.cyanAccent,]; + + void _tapClear(){ + if (mounted) { + setState(() { + lines.clear(); + nowPoints.clear(); + }); + } + } + + @override + Widget build(BuildContext context) { + List pallet = []; + for (int i = 0; i < colors.length; i++) { + Color c = colors[i]; + pallet.add(ColorPallet(color: c,changeColor: changeColor,isSelect: c==nowColor,)); + } + + return SizedBox( + width: MediaQuery.of(context).size.width * 0.9, + height: MediaQuery.of(context).size.height * 0.6, + child:new Scaffold( + primary: false, + body: new Container( + decoration: BoxDecoration( + color: Colors.white + ), + child:new Flex( + direction: Axis.vertical, + children: [ + Container( + decoration:BoxDecoration( + color: Colors.black12 + ), + child: ListView( + scrollDirection: Axis.horizontal, + children: pallet + , + ), + height: 60.0, + ), + Expanded( + child: AspectRatio( + aspectRatio: 1.0, + child: GestureDetector( + child: CustomPaint( + painter: PaintCanvas(lines,nowPoints,nowColor), + ), + onHorizontalDragUpdate: moveGestureDetector, + onVerticalDragUpdate: moveGestureDetector, + onHorizontalDragStart: newGestureDetector, + onVerticalDragStart: newGestureDetector, + ), + ), + ) + ], + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: _tapClear, + backgroundColor: Colors.redAccent, + foregroundColor: Colors.white, + child: Icon(Icons.delete), + ), + ) + ); + } +} + +class PaintCanvas extends CustomPainter{ + + final List lines; + final List nowPoints; + final Color nowColor; + + PaintCanvas(this.lines, this.nowPoints, this.nowColor); + + @override + void paint(Canvas canvas, Size size) { + Paint p = new Paint() + ..color = Colors.redAccent + ..strokeCap = StrokeCap.round + ..strokeWidth = 5.0; + canvas.save(); + for (int i = 0; i < lines.length; i++) { + LinePoints l = lines[i]; + for (int j = 1; j < l.points.length; j++){ + Offset p1 = l.points[j - 1]; + Offset p2 = l.points[j]; + p.color = l.lineColor; + canvas.drawLine(p1, p2, p); + } + } + for (int i = 1; i < nowPoints.length; i++){ + Offset p1 = nowPoints[i - 1]; + Offset p2 = nowPoints[i]; + p.color = nowColor; + canvas.drawLine(p1, p2, p); + } + + canvas.restore(); + } + @override + bool shouldRepaint(CustomPainter oldDelegate) { + return true; + } +} + +class LinePoints{ + final List points; + final Color lineColor; + LinePoints(this.points, this.lineColor); +} + +class ColorPallet extends StatelessWidget { + final Color color; + final Function changeColor; + const ColorPallet({Key key, this.color, this.changeColor, this.isSelect}) : super(key: key); + final bool isSelect; + + void onPressed(){ + changeColor(color); + } + + @override + Widget build(BuildContext context) { + return new RawMaterialButton( + onPressed: onPressed, + constraints: BoxConstraints(minWidth: 60.0,minHeight: 50.0), + child: new Container( + margin: EdgeInsets.only(top: 5.0,bottom: 5.0), + width: 50.0, + height: 50.0, + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.all(Radius.circular(25.0)), + border: Border.all(color: Colors.white,width: isSelect?3.0:0.0) + ), + )) ; + } +} \ No newline at end of file diff --git a/lib/widgets/elements/Media/Canvas/PainterSketch/index.dart b/lib/widgets/elements/Media/Canvas/PainterSketch/index.dart new file mode 100644 index 00000000..fa113c4f --- /dev/null +++ b/lib/widgets/elements/Media/Canvas/PainterSketch/index.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_go/components/widget_demo.dart'; +import './demo.dart' as demoBoxs; + +const Text = ''' +### **简介** +> 操作图形的界面; + +'''; +const Text1 = ''' +### **基本用法** +- canvas + paint + GestureDetector 实现一个 简易的画板; +'''; + + +class Demo extends StatefulWidget { + static const String routeName = '/element/Media/Canvas/PainterSketch'; + + _DemoState createState() => _DemoState(); +} + +class _DemoState extends State { + @override + Widget build(BuildContext context) { + return WidgetDemo( + title: 'PainterSketch', + codeUrl: 'elements/Media/Canvas/PainterSketch/demo.dart', + contentList: [ + Text, + Text1, + demoBoxs.PainterSketchDome() + ], + docUrl: 'https://docs.flutter.io/flutter/dart-ui/Paint-class.html', + ); + } +} + diff --git a/lib/widgets/elements/Media/Canvas/index.dart b/lib/widgets/elements/Media/Canvas/index.dart index e3e60ec0..d3c73227 100644 --- a/lib/widgets/elements/Media/Canvas/index.dart +++ b/lib/widgets/elements/Media/Canvas/index.dart @@ -1 +1,31 @@ -// import 'package:flutter/material.dart'; +import 'package:flutter_go/model/widget.dart'; +import "package:flutter/material.dart"; + +import 'PainterSketch/index.dart' as PainterSketch; +import 'Canvas/index.dart' as Canvas; +import 'PainterPath/index.dart' as PainterPath; +import 'CircleProgressBarPainter/index.dart' as CircleProgressBarPainter; + + +List widgetPoints = [ + WidgetPoint( + name: 'PainterSketch', + routerName: PainterSketch.Demo.routeName, + buildRouter: (BuildContext context) => PainterSketch.Demo(), + ), + WidgetPoint( + name: 'Canvas', + routerName: Canvas.Demo.routeName, + buildRouter: (BuildContext context) => Canvas.Demo(), + ), + WidgetPoint( + name: 'PainterPath', + routerName: PainterPath.Demo.routeName, + buildRouter: (BuildContext context) => PainterPath.Demo(), + ), + WidgetPoint( + name: 'CircleProgressBarPainter', + routerName: CircleProgressBarPainter.Demo.routeName, + buildRouter: (BuildContext context) => CircleProgressBarPainter.Demo(), + ) +]; diff --git a/lib/widgets/elements/Media/Icon/Icon/demo.dart b/lib/widgets/elements/Media/Icon/Icon/demo.dart index 6b5d2fc4..989b3a7a 100644 --- a/lib/widgets/elements/Media/Icon/Icon/demo.dart +++ b/lib/widgets/elements/Media/Icon/Icon/demo.dart @@ -14,7 +14,7 @@ class IconDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - child: new Icon( + child: Icon( Icons.favorite, color: this.curColor, size: 30.0, diff --git a/lib/widgets/elements/Media/Icon/IconData/demo.dart b/lib/widgets/elements/Media/Icon/IconData/demo.dart index 4dae9660..2998fcec 100644 --- a/lib/widgets/elements/Media/Icon/IconData/demo.dart +++ b/lib/widgets/elements/Media/Icon/IconData/demo.dart @@ -7,16 +7,16 @@ import 'package:flutter/material.dart'; class IconDataDemo extends StatelessWidget { - final Color curColor ; + final Color curColor; IconDataDemo({Key key, this.curColor}) : super(); @override Widget build(BuildContext context) { return Container( - child: new Icon( + child: Icon( //参考 icon constans - new IconData(0xe567, + IconData(0xe567, fontFamily: 'MaterialIcons', matchTextDirection: true), color: this.curColor, size: 30.0, diff --git a/lib/widgets/elements/Media/Icon/IconTheme/demo.dart b/lib/widgets/elements/Media/Icon/IconTheme/demo.dart index 53fa28a0..ed1845ca 100644 --- a/lib/widgets/elements/Media/Icon/IconTheme/demo.dart +++ b/lib/widgets/elements/Media/Icon/IconTheme/demo.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; class IconThemeDemo extends StatelessWidget { - final Color curColor ; + final Color curColor; IconThemeDemo({Key key, this.curColor}) : super(); @@ -15,17 +15,20 @@ class IconThemeDemo extends StatelessWidget { Widget build(BuildContext context) { return AppBar( actions: [ - new IconTheme( - data: new IconThemeData(color: curColor, opacity: 3.0), - child: Container( - padding: EdgeInsets.all(20.0), child: Icon(Icons.equalizer))), + IconTheme( + data: IconThemeData(color: curColor, opacity: 3.0), + child: Container( + padding: EdgeInsets.all(20.0), + child: Icon(Icons.equalizer), + ), + ), ], ); } } class IconThemeDemo2 extends StatelessWidget { - final Color curColor ; + final Color curColor; final double curSize; IconThemeDemo2({Key key, this.curColor, this.curSize}) : super(); @@ -34,8 +37,8 @@ class IconThemeDemo2 extends StatelessWidget { Widget build(BuildContext context) { return AppBar( actions: [ - new IconTheme( - data: new IconThemeData(color: curColor, opacity: 3.0), + IconTheme( + data: IconThemeData(color: curColor, opacity: 3.0), child: Row( children: [ Icon( diff --git a/lib/widgets/elements/Media/Icon/IconThemeData/demo.dart b/lib/widgets/elements/Media/Icon/IconThemeData/demo.dart index 4fb49517..a33a2bd5 100644 --- a/lib/widgets/elements/Media/Icon/IconThemeData/demo.dart +++ b/lib/widgets/elements/Media/Icon/IconThemeData/demo.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; class IconThemeDemo extends StatelessWidget { - final Color curColor ; + final Color curColor; final double curOpacity; IconThemeDemo({Key key, this.curColor, this.curOpacity}) : super(); @@ -16,20 +16,20 @@ class IconThemeDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - child: new IconTheme( + child: IconTheme( //opacity: 设置透明 - data: new IconThemeData( + data: IconThemeData( color: curColor, opacity: curOpacity, ), - child: new Icon(Icons.favorite), + child: Icon(Icons.favorite), ), ); } } class IconThemeDemo2 extends StatelessWidget { - final Color curColor ; + final Color curColor; final double curSize; IconThemeDemo2({Key key, this.curColor, this.curSize}) : super(); @@ -38,8 +38,8 @@ class IconThemeDemo2 extends StatelessWidget { Widget build(BuildContext context) { return AppBar( actions: [ - new IconTheme( - data: new IconThemeData(color: curColor, opacity: 1.0), + IconTheme( + data: IconThemeData(color: curColor, opacity: 1.0), child: Row( children: [ Icon(Icons.favorite_border), diff --git a/lib/widgets/elements/Media/Icon/ImageIcon/demo.dart b/lib/widgets/elements/Media/Icon/ImageIcon/demo.dart index 24ddeeb6..c5daecb1 100644 --- a/lib/widgets/elements/Media/Icon/ImageIcon/demo.dart +++ b/lib/widgets/elements/Media/Icon/ImageIcon/demo.dart @@ -10,8 +10,8 @@ class ImageIconDemo extends StatelessWidget { @override Widget build(BuildContext context) { //注意:当你用一个图片的时候,这个图片会被整个覆盖,只保留图片的形状,填充你设置的颜色 - return new ImageIcon( - new AssetImage('assets/images/btn_icon_dingyuehao_normal.png'), + return ImageIcon( + AssetImage('assets/images/btn_icon_dingyuehao_normal.png'), color: Colors.red, size: 50.0, ); diff --git a/lib/widgets/elements/Media/Icon/index.dart b/lib/widgets/elements/Media/Icon/index.dart index 0551c584..630bf3b4 100644 --- a/lib/widgets/elements/Media/Icon/index.dart +++ b/lib/widgets/elements/Media/Icon/index.dart @@ -17,20 +17,20 @@ List widgetPoints = [ name: 'ImageIcon', routerName: ImageIcon.Demo.routeName, buildRouter: (BuildContext context) => ImageIcon.Demo(), - ), WidgetPoint( + ), + WidgetPoint( name: 'IconTheme', routerName: IconTheme.Demo.routeName, buildRouter: (BuildContext context) => IconTheme.Demo(), ), - WidgetPoint( + WidgetPoint( name: 'IconData', routerName: IconData.Demo.routeName, buildRouter: (BuildContext context) => IconData.Demo(), ), - WidgetPoint( + WidgetPoint( name: 'IconThemeData', routerName: IconThemeData.Demo.routeName, buildRouter: (BuildContext context) => IconThemeData.Demo(), ), - ]; diff --git a/lib/widgets/elements/Media/Image/FadeInImage/fade_in_image_demo.dart b/lib/widgets/elements/Media/Image/FadeInImage/fade_in_image_demo.dart index a4cd8287..3e6f56d0 100644 --- a/lib/widgets/elements/Media/Image/FadeInImage/fade_in_image_demo.dart +++ b/lib/widgets/elements/Media/Image/FadeInImage/fade_in_image_demo.dart @@ -11,8 +11,8 @@ class FadeInImageDemo extends StatelessWidget { Widget build(BuildContext context) { return Column( children: [ - new ClipOval( - child: new FadeInImage.assetNetwork( + ClipOval( + child: FadeInImage.assetNetwork( placeholder: "assets/images/normal_user_icon.png", //预览图 fit: BoxFit.fitWidth, image: @@ -24,10 +24,10 @@ class FadeInImageDemo extends StatelessWidget { SizedBox( height: 20.0, ), - new CircleAvatar( - backgroundImage: new NetworkImage( + CircleAvatar( + backgroundImage: NetworkImage( "https://img.alicdn.com/tfs/TB148sWfMHqK1RjSZFgXXa7JXXa-536-482.png"), - child: new Text("一凨"), //可以在图片上添加文字等等 + child: Text("一凨"), //可以在图片上添加文字等等 ), ], ); diff --git a/lib/widgets/elements/Media/Image/FileImage/file_image_demo.dart b/lib/widgets/elements/Media/Image/FileImage/file_image_demo.dart index 492251fe..c4ebf73a 100644 --- a/lib/widgets/elements/Media/Image/FileImage/file_image_demo.dart +++ b/lib/widgets/elements/Media/Image/FileImage/file_image_demo.dart @@ -13,7 +13,7 @@ import 'dart:io'; class FileImageDemo extends StatefulWidget { @override - _FileImageDemoState createState() => new _FileImageDemoState(); + _FileImageDemoState createState() => _FileImageDemoState(); } class _FileImageDemoState extends State { @@ -31,10 +31,10 @@ class _FileImageDemoState extends State { Widget build(BuildContext context) { return Column( children: [ - new Center( + Center( child: _image == null - ? new Text('您还未选择任何图片.') - : new Image.file(_image,scale: 0.5,fit: BoxFit.cover,), + ? Text('您还未选择任何图片.') + : Image.file(_image,scale: 0.5,fit: BoxFit.cover,), ), FlatButton( onPressed: getImage, diff --git a/lib/widgets/elements/Media/Image/MemoryImage/memory_image_demo.dart b/lib/widgets/elements/Media/Image/MemoryImage/memory_image_demo.dart index a7ad8132..1ee10992 100644 --- a/lib/widgets/elements/Media/Image/MemoryImage/memory_image_demo.dart +++ b/lib/widgets/elements/Media/Image/MemoryImage/memory_image_demo.dart @@ -29,11 +29,11 @@ class _MemoryImageDemoState extends State { @override Widget build(BuildContext context) { - final decoration = new BoxDecoration( + final decoration = BoxDecoration( image: bytes == null ? null - : new DecorationImage( - image: new MemoryImage(bytes,scale: 1.0), + : DecorationImage( + image: MemoryImage(bytes,scale: 1.0), ), ); return Container( diff --git a/lib/widgets/elements/Media/index.dart b/lib/widgets/elements/Media/index.dart index c11673ed..3933301f 100644 --- a/lib/widgets/elements/Media/index.dart +++ b/lib/widgets/elements/Media/index.dart @@ -6,10 +6,12 @@ */ import 'Image/index.dart' as Image; import 'Icon/index.dart' as Icon; +import 'Canvas/index.dart' as Canvas; List getWidgets() { List result = []; result.addAll(Image.widgetPoints); result.addAll(Icon.widgetPoints); + result.addAll(Canvas.widgetPoints); return result; } \ No newline at end of file diff --git a/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart b/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart index 6b3ec058..cc4d419f 100644 --- a/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoApp/demo.dart @@ -25,8 +25,7 @@ class CupertinoAppFullDefault extends StatefulWidget { * CupertinoApp 默认的实例,有状态 * */ class _CupertinoAppFullDefault extends State { - - routerHandler(setting){ + routerHandler(setting) { //setting.isInitialRoute; bool类型 是否初始路由 //setting.name; 要跳转的路由名key return PageRouteBuilder( @@ -37,17 +36,16 @@ class _CupertinoAppFullDefault extends State { opaque: false, //跳转动画 transitionDuration: Duration(milliseconds: 200), - transitionsBuilder: (___, Animation animation, ____, Widget child) { + transitionsBuilder: + (___, Animation animation, ____, Widget child) { return FadeTransition( opacity: animation, - child: new ScaleTransition( - scale: new Tween(begin: 0.5, end: 1.0) - .animate(animation), + child: ScaleTransition( + scale: Tween(begin: 0.5, end: 1.0).animate(animation), child: child, ), ); - } - ); + }); } @override @@ -57,63 +55,78 @@ class _CupertinoAppFullDefault extends State { width: MediaQuery.of(context).size.width, //height: 500.0, child: CupertinoApp( - title: '这里是标题',// 设备用于识别用户的应用程序的单行描述 - builder: (BuildContext context,Widget child) { // 覆盖下面的所有界面,一般当作追加属性用 + title: '这里是标题', // 设备用于识别用户的应用程序的单行描述 + builder: (BuildContext context, Widget child) { + // 覆盖下面的所有界面,一般当作追加属性用 //return Container(child:Text('这里是内容1',style:TextStyle(color:Colors.black))); - return MediaQuery(// 当构建一个Widget前,调用一般做字体大小,方向,主题颜色等配置 - //字体大小 - data: MediaQuery.of(context).copyWith(textScaleFactor: 1.4), - child: child - ); + return MediaQuery( + // 当构建一个Widget前,调用一般做字体大小,方向,主题颜色等配置 + //字体大小 + data: MediaQuery.of(context).copyWith(textScaleFactor: 1.4), + child: child); }, - checkerboardOffscreenLayers:false, // 打开渲染到屏幕外位图的图层的checkerboarding - checkerboardRasterCacheImages:false, // 打开光栅缓存图像的检查板。 - debugShowCheckedModeBanner:true,// 在debug模式下打开一个小“DEBUG”横幅,表示该应用程序处于检查模式 + checkerboardOffscreenLayers: false, // 打开渲染到屏幕外位图的图层的checkerboarding + checkerboardRasterCacheImages: false, // 打开光栅缓存图像的检查板。 + debugShowCheckedModeBanner: + true, // 在debug模式下打开一个小“DEBUG”横幅,表示该应用程序处于检查模式 color: Colors.red, // 该颜色为程序切换中应用图标背景的颜色,当应用图标背景为透明时 // home: HomePage(),// 进入程序后显示的第一个页面,传入的是一个Widget,但实际上这个Widget需要包裹一个Scaffold - home: CupertinoPageScaffold(// 进入程序后显示的第一个页面,传入的是一个Widget,但实际上这个Widget需要包裹一个Scaffold + home: CupertinoPageScaffold( + // 进入程序后显示的第一个页面,传入的是一个Widget,但实际上这个Widget需要包裹一个Scaffold navigationBar: CupertinoNavigationBar( leading: Icon(CupertinoIcons.back), middle: Text('Title'), trailing: Icon(CupertinoIcons.share), ), - child:Container( // home 对应的内容和 router对应的内容,同时存在 + child: Container( + // home 对应的内容和 router对应的内容,同时存在 padding: const EdgeInsets.only(bottom: 60.0), alignment: Alignment.center, - child:Text('这里是 home 属性对应的内容',style:TextStyle(color:Colors.black)) - ), // 应用程序默认路由,(Navigator.defaultRouteName,即/) - ), - initialRoute:'/home',// 如果构建了导航器,则显示的第一条路径的名称,初始路由,当用户进入程序时,自动打开对应的路由。(home还是位于一级)传入的是上面routes的key - locale:Locale('zh', 'CH'),// 本地化初始值 - localeResolutionCallback: (local,support){// 区域分辨回调,当传入的是不支持的语种,可以根据这个回调,返回相近,并且支持的语种 - return const Locale('us','uk'); + child: Text('这里是 home 属性对应的内容', + style: TextStyle( + color: Colors + .black))), // 应用程序默认路由,(Navigator.defaultRouteName,即/) + ), + initialRoute: + '/home', // 如果构建了导航器,则显示的第一条路径的名称,初始路由,当用户进入程序时,自动打开对应的路由。(home还是位于一级)传入的是上面routes的key + locale: Locale('zh', 'CH'), // 本地化初始值 + localeResolutionCallback: (local, support) { + // 区域分辨回调,当传入的是不支持的语种,可以根据这个回调,返回相近,并且支持的语种 + return const Locale('us', 'uk'); }, - localizationsDelegates:[], // 本地化委托,用于更改Flutter Widget默认的提示语,按钮text等,返回一个 继承自 LocalizationsDelegate 的对象 - navigatorKey:GlobalKey(), // 导航主键 GlobalKey - navigatorObservers: [ // 路由观察器,当调用Navigator的相关方法时,会回调相关的操作 + localizationsDelegates: [], // 本地化委托,用于更改Flutter Widget默认的提示语,按钮text等,返回一个 继承自 LocalizationsDelegate 的对象 + navigatorKey: GlobalKey(), // 导航主键 GlobalKey + navigatorObservers: [ + // 路由观察器,当调用Navigator的相关方法时,会回调相关的操作 MyObserver(), ], - onGenerateRoute: (setting){ // 当通过Navigation.of(context).pushNamed跳转路由时,在routes查找不到时,会调用该方法 + onGenerateRoute: (setting) { + // 当通过Navigation.of(context).pushNamed跳转路由时,在routes查找不到时,会调用该方法 routerHandler(setting); }, - onGenerateTitle: (context){ // 跟上面的tiitle一样,但含有一个context参数用于做本地化 + onGenerateTitle: (context) { + // 跟上面的tiitle一样,但含有一个context参数用于做本地化 return 'Flutter应用'; }, - onUnknownRoute: (setting){ // 效果跟onGenerateRoute一样调用顺序为onGenerateRoute ==> onUnknownRoute + onUnknownRoute: (setting) { + // 效果跟onGenerateRoute一样调用顺序为onGenerateRoute ==> onUnknownRoute //RouterHandler(setting); }, - routes: { // 声明程序中有哪个通过Navigation.of(context).pushNamed跳转的路由参数以键值对的形式传递key:路由名字value:对应的Widget - '/home':(BuildContext context) => HomePage(), - '/home/one':(BuildContext context) => OnePage(), + routes: { + // 声明程序中有哪个通过Navigation.of(context).pushNamed跳转的路由参数以键值对的形式传递key:路由名字value:对应的Widget + '/home': (BuildContext context) => HomePage(), + '/home/one': (BuildContext context) => OnePage(), }, - showPerformanceOverlay:false, // 当为true时应用程序顶部覆盖一层GPU和UI曲线图,可即时查看当前流畅度情况 - showSemanticsDebugger:false, // 当为true时,打开Widget边框,类似Android开发者模式中显示布局边界 - supportedLocales:[// 传入支持的语种数组 + showPerformanceOverlay: + false, // 当为true时应用程序顶部覆盖一层GPU和UI曲线图,可即时查看当前流畅度情况 + showSemanticsDebugger: + false, // 当为true时,打开Widget边框,类似Android开发者模式中显示布局边界 + supportedLocales: [ + // 传入支持的语种数组 const Locale('uok'), const Locale('meg'), ], - ) - ); + )); } Widget homeBuild(BuildContext context) { @@ -139,14 +152,13 @@ class _CupertinoAppFullDefault extends State { middle: Text('这里是标题', style: TextStyle(color: Colors.white)), ), child: Center(child: Text('这里是内容', style: TextStyle(color: Colors.black))), - backgroundColor: CupertinoColors.extraLightBackgroundGray, + backgroundColor: CupertinoColors.inactiveGray, ); - } - ); + }); } } -class MyObserver extends NavigatorObserver{ +class MyObserver extends NavigatorObserver { @override void didPush(Route route, Route previousRoute) { // 当调用Navigator.push时回调 @@ -157,16 +169,17 @@ class MyObserver extends NavigatorObserver{ } } -class HomePage extends StatelessWidget{ +class HomePage extends StatelessWidget { @override - Widget build(BuildContext context){ - return Center(child:Text('HomePage',style:TextStyle(color:Colors.black))); + Widget build(BuildContext context) { + return Center( + child: Text('HomePage', style: TextStyle(color: Colors.black))); } } -class OnePage extends StatelessWidget{ +class OnePage extends StatelessWidget { @override - Widget build(BuildContext context){ - return Center(child:Text('OnePage',style:TextStyle(color:Colors.red))); + Widget build(BuildContext context) { + return Center(child: Text('OnePage', style: TextStyle(color: Colors.red))); } -} \ No newline at end of file +} diff --git a/lib/widgets/themes/Cupertino/CupertinoButton/demo.dart b/lib/widgets/themes/Cupertino/CupertinoButton/demo.dart index 02cf2417..a65dfb52 100644 --- a/lib/widgets/themes/Cupertino/CupertinoButton/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoButton/demo.dart @@ -34,7 +34,7 @@ class _CupertinoButtonFullDefault extends State { print('on Pressed!'); }, pressedOpacity:0.5,// 按下后的按钮不透明度 - color:CupertinoColors.darkBackgroundGray, + color:CupertinoColors.inactiveGray, child: new Text('CupertinoButton'), ); } diff --git a/lib/widgets/themes/Cupertino/CupertinoNavigationBar/demo.dart b/lib/widgets/themes/Cupertino/CupertinoNavigationBar/demo.dart index b3cd27c9..259c3141 100644 --- a/lib/widgets/themes/Cupertino/CupertinoNavigationBar/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoNavigationBar/demo.dart @@ -102,7 +102,7 @@ class _CupertinoNavigationBarFullDefault extends State { middle: Text('Title'),// 放置在导航栏的中间。通常是标题或分段控件 trailing: Icon(CupertinoIcons.share),// 放置在导航栏的末尾。通常在页面上执行其他操作,例如搜索或编辑功能 actionsForegroundColor:CupertinoColors.white,// 用于 导航栏中前导和尾随小部件的文本和图标的默认颜色。 - backgroundColor:CupertinoColors.activeOrange,// 导航栏的背景颜色。如果它包含透明度,标签栏将自动对其背后的内容产生模糊效果 + backgroundColor:CupertinoColors.activeGreen,// 导航栏的背景颜色。如果它包含透明度,标签栏将自动对其背后的内容产生模糊效果 border:Border( // 边框样式 bottom: BorderSide(color: CupertinoColors.inactiveGray, width: 1.0), ), diff --git a/lib/widgets/themes/Cupertino/CupertinoPageScaffold/demo.dart b/lib/widgets/themes/Cupertino/CupertinoPageScaffold/demo.dart index 3f6cf02e..24f2e493 100644 --- a/lib/widgets/themes/Cupertino/CupertinoPageScaffold/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoPageScaffold/demo.dart @@ -34,7 +34,7 @@ class _CupertinoPageScaffoldFullDefault extends State { Widget navigationBar(BuildContext context) { return CupertinoPageScaffold( // 进入程序后显示的第一个页面,传入的是一个Widget,但实际上这个Widget需要包裹一个Scaffold - backgroundColor:CupertinoColors.extraLightBackgroundGray,// 整个脚手架下面的 widget 的颜色 + backgroundColor:CupertinoColors.inactiveGray,// 整个脚手架下面的 widget 的颜色 navigationBar: CupertinoNavigationBar( leading: Icon(CupertinoIcons.back),// 放置在导航栏的开头。通常是正常页面的后退按钮或完整页面对话框的取消按钮 middle: Text('这里是标题'),// 放置在导航栏的中间。通常是标题或分段控件 diff --git a/lib/widgets/themes/Cupertino/CupertinoPicker/demo.dart b/lib/widgets/themes/Cupertino/CupertinoPicker/demo.dart index 6a327ab9..1593f881 100644 --- a/lib/widgets/themes/Cupertino/CupertinoPicker/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoPicker/demo.dart @@ -47,7 +47,7 @@ class _CupertinoPickerDemoState extends State { Widget _buildMenu(List children) { return Container( decoration: BoxDecoration( - color: CupertinoTheme.of(context).scaffoldBackgroundColor, + color:CupertinoColors.inactiveGray, border: const Border( top: BorderSide(color: Color(0xFFBCBBC1), width: 0.0), bottom: BorderSide(color: Color(0xFFBCBBC1), width: 0.0), @@ -108,7 +108,9 @@ class _CupertinoPickerDemoState extends State { backgroundColor: CupertinoColors.white,// 所有子节点下面的背景颜色 useMagnifier:true,// 是否使用放大效果 onSelectedItemChanged: (int index) { // 当正中间选项改变时的回调 - setState(() => _selectedColorIndex = index); + if (mounted) { + setState(() => _selectedColorIndex = index); + } }, children: List.generate(coolColorNames.length, (int index) { return Center(child: @@ -144,7 +146,9 @@ class _CupertinoPickerDemoState extends State { CupertinoTimerPicker( initialTimerDuration: timer, onTimerDurationChanged: (Duration newTimer) { - setState(() => timer = newTimer); + if (mounted) { + setState(() => timer = newTimer); + } }, ), ); @@ -176,7 +180,9 @@ class _CupertinoPickerDemoState extends State { mode: CupertinoDatePickerMode.date, initialDateTime: date, onDateTimeChanged: (DateTime newDateTime) { - setState(() => date = newDateTime); + if (mounted) { + setState(() => date = newDateTime); + } }, ), ); @@ -206,7 +212,9 @@ class _CupertinoPickerDemoState extends State { mode: CupertinoDatePickerMode.time, initialDateTime: time, onDateTimeChanged: (DateTime newDateTime) { - setState(() => time = newDateTime); + if (mounted) { + setState(() => time = newDateTime); + } }, ), ); @@ -236,7 +244,9 @@ class _CupertinoPickerDemoState extends State { mode: CupertinoDatePickerMode.dateAndTime, initialDateTime: dateTime, onDateTimeChanged: (DateTime newDateTime) { - setState(() => dateTime = newDateTime); + if (mounted) { + setState(() => dateTime = newDateTime); + } }, ), ); @@ -265,12 +275,10 @@ class _CupertinoPickerDemoState extends State { // previousPageTitle: 'Cupertino' // ), child: DefaultTextStyle( - style: CupertinoTheme.of(context).textTheme.textStyle, + style: TextStyle(), child: DecoratedBox( decoration: BoxDecoration( - color: CupertinoTheme.of(context).brightness == Brightness.light - ? CupertinoColors.extraLightBackgroundGray - : CupertinoColors.darkBackgroundGray, + color: CupertinoColors.inactiveGray ), child: ListView( children: [ diff --git a/lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart b/lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart index 9e2e7765..d9e155ef 100644 --- a/lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart @@ -16,7 +16,7 @@ class CupertinoSegmentedControlDemo extends StatefulWidget { class _Demo extends State { String value = 'a'; Widget build(BuildContext context) { - return new CupertinoSegmentedControl( + return CupertinoSegmentedControl( onValueChanged: (v) { this.setState(() { value = v; diff --git a/lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart b/lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart index cd46e5a8..160a1245 100644 --- a/lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart @@ -16,7 +16,7 @@ class CupertinoSliderDemo extends StatefulWidget { class _Demo extends State { double value = 0.0; Widget build(BuildContext context) { - return new CupertinoSlider( + return CupertinoSlider( value: value,//实际进度的位置 min: 0.0, max: 100.0, diff --git a/lib/widgets/themes/Cupertino/CupertinoTimerPicker/demo.dart b/lib/widgets/themes/Cupertino/CupertinoTimerPicker/demo.dart index be683a88..3e3b597a 100644 --- a/lib/widgets/themes/Cupertino/CupertinoTimerPicker/demo.dart +++ b/lib/widgets/themes/Cupertino/CupertinoTimerPicker/demo.dart @@ -16,7 +16,7 @@ class CupertinoTimerPickerDemo extends StatefulWidget { class _Demo extends State { int index = 0; - Duration timer = new Duration(minutes: 50); + Duration timer = Duration(minutes: 50); Widget _buildBottomPicker(Widget picker) { return Container( diff --git a/lib/widgets/themes/Cupertino/index.dart b/lib/widgets/themes/Cupertino/index.dart index 2da137c6..2266f696 100644 --- a/lib/widgets/themes/Cupertino/index.dart +++ b/lib/widgets/themes/Cupertino/index.dart @@ -1,4 +1,5 @@ -import "package:flutter/material.dart"; +import 'package:flutter/material.dart'; + import '../../../model/widget.dart'; diff --git a/lib/widgets/themes/Material/MaterialApp/demo.dart b/lib/widgets/themes/Material/MaterialApp/demo.dart index be00903d..d7e279bf 100644 --- a/lib/widgets/themes/Material/MaterialApp/demo.dart +++ b/lib/widgets/themes/Material/MaterialApp/demo.dart @@ -10,9 +10,9 @@ // class MaterialApp extends StatelessWidget { // @override // Widget build(BuildContext context) { -// return new MaterialApp( +// return MaterialApp( // title: 'title', -// theme: new ThemeData( +// theme: ThemeData( // primaryColor: Color(ThemeColor), // backgroundColor: Color(0xFFEFEFEF), // accentColor: Color(0xFF888888), @@ -25,7 +25,7 @@ // size: 35.0, // ), // ), -// home: new MyHomePage(), +// home: MyHomePage(), // onGenerateRoute: Application.router.generator, // ); // } diff --git a/lib/widgets/themes/Material/MaterialApp/index.dart b/lib/widgets/themes/Material/MaterialApp/index.dart index 907f21c9..fa3e540e 100644 --- a/lib/widgets/themes/Material/MaterialApp/index.dart +++ b/lib/widgets/themes/Material/MaterialApp/index.dart @@ -50,4 +50,4 @@ class _DemoState extends State { codeUrl: 'themes/Material/MaterialApp/demo.dart', ); } -} \ No newline at end of file +} diff --git a/lib/widgets/themes/Material/MaterialColor/demo.dart b/lib/widgets/themes/Material/MaterialColor/demo.dart index cd43abbc..83227034 100644 --- a/lib/widgets/themes/Material/MaterialColor/demo.dart +++ b/lib/widgets/themes/Material/MaterialColor/demo.dart @@ -14,10 +14,9 @@ class Palette { final String name; final MaterialColor primary; - /* - * MaterialAccentColor:定义单一的色滴,颜色的阴影用索引表示, - * 索引比较小的颜色比较浅,较大的索引较暗 - */ + /// MaterialAccentColor:定义单一的色滴,颜色的阴影用索引表示, + /// 索引比较小的颜色比较浅,较大的索引较暗 + final MaterialAccentColor accent; final int threshold; // titles for indices > threshold are white, otherwise black diff --git a/lib/widgets/themes/Material/MaterialPageRoute/demo.dart b/lib/widgets/themes/Material/MaterialPageRoute/demo.dart index 260e078f..726dd428 100644 --- a/lib/widgets/themes/Material/MaterialPageRoute/demo.dart +++ b/lib/widgets/themes/Material/MaterialPageRoute/demo.dart @@ -14,18 +14,18 @@ class FirstPage extends StatefulWidget { } class _FirstPageState extends State { - var _usernameController = new TextEditingController(); - var _emailController = new TextEditingController(); + var _usernameController = TextEditingController(); + var _emailController = TextEditingController(); @override Widget build(BuildContext context) { return Column( children: [ Padding( - child: new Text( + child: Text( "账号登录", textAlign: TextAlign.center, - style: new TextStyle(fontWeight: FontWeight.bold, fontSize: 20), + style: TextStyle(fontWeight: FontWeight.bold, fontSize: 20), ), padding: EdgeInsets.only(bottom: 10.0), ), @@ -37,11 +37,11 @@ class _FirstPageState extends State { decoration: InputDecoration(labelText: "email"), controller: _emailController, ), - new RaisedButton( + RaisedButton( child: Text("点击跳转"), onPressed: () { - var route = new MaterialPageRoute( - builder: (BuildContext context) => new SecondPage( + var route = MaterialPageRoute( + builder: (BuildContext context) => SecondPage( value: User( account: _usernameController.text, email: _emailController.text)), @@ -65,21 +65,21 @@ class SecondPage extends StatefulWidget { class _SecondPageState extends State { @override Widget build(BuildContext context) { - return new Scaffold( - appBar: new AppBar( + return Scaffold( + appBar: AppBar( title: Text("MaterialPageRoute2"), ), - body: new Container( - child: new Center( + body: Container( + child: Center( child: Column( children: [ Container( padding: EdgeInsets.only(top: 30.0), - child: new Text("登陆成功!!!", + child: Text("登陆成功!!!", style: TextStyle( fontSize: 28, fontWeight: FontWeight.bold))), Padding( - child: new Text( + child: Text( 'account:${widget.value.account}', textAlign: TextAlign.center, style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), @@ -87,7 +87,7 @@ class _SecondPageState extends State { padding: EdgeInsets.only(bottom: 20.0, top: 40.0), ), Padding( - child: new Text( + child: Text( 'email:${widget.value.email}', textAlign: TextAlign.center, style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), diff --git a/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart b/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart index df54a53e..8e43e352 100644 --- a/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart +++ b/lib/widgets/themes/Material/MergeableMaterialItem/demo.dart @@ -25,20 +25,19 @@ class _MergeableMaterialItemState extends State { @override Widget build(BuildContext context) { items.add( - /** - * class MaterialSlice extends MergeableMaterialItem - */ - new MaterialSlice( - key: new ValueKey(currIndexNum), - child: new Column(children: [ + + //class MaterialSlice extends MergeableMaterialItem + MaterialSlice( + key: ValueKey(currIndexNum), + child: Column(children: [ // header, - new AnimatedCrossFade( - firstChild: new Container( + AnimatedCrossFade( + firstChild: Container( height: 20.0, width: 20.0, color: Colors.green, ), - secondChild: new Container( + secondChild: Container( height: 20.0, width: 20.0, color: Colors.red, @@ -57,8 +56,8 @@ class _MergeableMaterialItemState extends State { return Column( children: [ - new MergeableMaterial(hasDividers: true, children: items), - new RaisedButton( + MergeableMaterial(hasDividers: true, children: items), + RaisedButton( child: Text("点击添加"), onPressed: () { _isChildExpanded(); diff --git a/pubspec.yaml b/pubspec.yaml index 0a4b52ba..3c8a6322 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,7 +63,7 @@ flutter: - lib/widgets/components/Chip/ChipThemeData/demo.dart - lib/widgets/components/Chip/ChoiceChip/demo.dart - lib/widgets/components/Chip/FilterChip/demo.dart - - lib/widgets/components/Chip/inputChip/demo.dart + - lib/widgets/components/Chip/InputChip/demo.dart - lib/widgets/components/Chip/RawChip/demo.dart - lib/widgets/components/Dialog/AboutDialog/demo.dart - lib/widgets/components/Dialog/AlertDialog/demo.dart @@ -124,14 +124,12 @@ flutter: - lib/widgets/elements/Frame/Align/Align/demo.dart - lib/widgets/elements/Frame/Box/ConstrainedBox/demo.dart - lib/widgets/elements/Frame/Box/DecoratedBox/demo.dart - - lib/widgets/elements/Frame/Box/Fittedbox/demo.dart + - lib/widgets/elements/Frame/Box/FittedBox/demo.dart - lib/widgets/elements/Frame/Box/LimitedBox/demo.dart - lib/widgets/elements/Frame/Box/OverflowBox/demo.dart - - lib/widgets/elements/Frame/Box/RenderBox/demo.dart - lib/widgets/elements/Frame/Box/RotatedBox/demo.dart - lib/widgets/elements/Frame/Box/SizeBox/demo.dart - lib/widgets/elements/Frame/Box/SizedOverflowBox/demo.dart - - lib/widgets/elements/Frame/Box/TextBox/demo.dart - lib/widgets/elements/Form/Text/Text/demo.dart - lib/widgets/elements/Form/Text/RichText/index.dart - lib/widgets/elements/Frame/Box/UnconstrainedBox/demo.dart @@ -163,6 +161,10 @@ flutter: - lib/widgets/elements/Media/Image/paintImage/paint_image_demo.dart - lib/widgets/elements/Media/Image/precacheImage/precache_image_demo.dart - lib/widgets/elements/Media/Image/RawImage/raw_image_demo.dart + - lib/widgets/elements/Media/Canvas/Canvas/demo.dart + - lib/widgets/elements/Media/Canvas/CircleProgressBarPainter/demo.dart + - lib/widgets/elements/Media/Canvas/PainterPath/demo.dart + - lib/widgets/elements/Media/Canvas/PainterSketch/demo.dart - lib/widgets/themes/Material/MaterialApp/demo.dart - lib/widgets/themes/Material/MaterialButton/demo.dart - lib/widgets/themes/Material/MaterialColor/demo.dart @@ -179,6 +181,7 @@ flutter: - lib/widgets/themes/Cupertino/CupertinoPopupSurface/demo.dart - lib/widgets/themes/Cupertino/CupertinoScrollbar/demo.dart - lib/widgets/themes/Cupertino/CupertinoSegmentedControl/demo.dart + - lib/widgets/elements/Form/Switch/Switch/demo.dart - lib/widgets/themes/Cupertino/CupertinoSlider/demo.dart - lib/widgets/themes/Cupertino/CupertinoSliverNavigationBar/demo.dart - lib/widgets/themes/Cupertino/CupertinoSwitch/demo.dart