diff --git a/isolate_example/lib/main.dart b/isolate_example/lib/main.dart index 65b265bec..dc08b7306 100644 --- a/isolate_example/lib/main.dart +++ b/isolate_example/lib/main.dart @@ -14,6 +14,10 @@ import 'package:flutter/material.dart'; +import 'page_one.dart'; +import 'page_two.dart'; +import 'page_three.dart'; + void main() { runApp(StartApp()); } @@ -47,30 +51,3 @@ class StartApp extends StatelessWidget { ); } } - -class PerformancePage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Center( - child: Text('Welcome to the Performance Page'), - ); - } -} - -class InfiniteProcessPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Center( - child: Text('Welcome to the Infinite Process Page'), - ); - } -} - -class DataTransferPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Center( - child: Text('Welcome to the Data Transfer Page'), - ); - } -} diff --git a/isolate_example/lib/page_one.dart b/isolate_example/lib/page_one.dart new file mode 100644 index 000000000..78178cf70 --- /dev/null +++ b/isolate_example/lib/page_one.dart @@ -0,0 +1,102 @@ +// Copyright 2019-present the Flutter authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:flutter/material.dart'; + +class PerformancePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SmoothAnimationWidget(), + ], + ), + ); + } +} + +class SmoothAnimationWidget extends StatefulWidget { + @override + SmoothAnimationWidgetState createState() => SmoothAnimationWidgetState(); +} + +class SmoothAnimationWidgetState extends State + with TickerProviderStateMixin { + AnimationController _controller; + var borderRadius; + + @override + void initState() { + super.initState(); + + _controller = AnimationController( + duration: const Duration(seconds: 1), + vsync: this, + )..addStatusListener( + (status) { + if (status == AnimationStatus.completed) { + _controller.reverse(); + } else if (status == AnimationStatus.dismissed) { + _controller.forward(); + } + }, + ); + + borderRadius = BorderRadiusTween( + begin: BorderRadius.circular(100.0), + end: BorderRadius.circular(0.0), + ).animate( + CurvedAnimation( + parent: _controller, + curve: Curves.linear, + ), + ); + + _controller.forward(); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: borderRadius, + builder: (context, child) { + return Center( + child: Container( + child: new FlutterLogo( + size: 200, + ), + alignment: Alignment.bottomCenter, + width: 350, + height: 200, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + colors: [Colors.blueAccent, Colors.redAccent], + ), + borderRadius: borderRadius.value, + ), + ), + ); + }, + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } +} diff --git a/isolate_example/lib/page_three.dart b/isolate_example/lib/page_three.dart new file mode 100644 index 000000000..cd9ce5130 --- /dev/null +++ b/isolate_example/lib/page_three.dart @@ -0,0 +1,24 @@ +// Copyright 2019-present the Flutter authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:flutter/material.dart'; + +class DataTransferPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Center( + child: Text('Welcome to the Data Transfer Page'), + ); + } +} diff --git a/isolate_example/lib/page_two.dart b/isolate_example/lib/page_two.dart new file mode 100644 index 000000000..b6547128c --- /dev/null +++ b/isolate_example/lib/page_two.dart @@ -0,0 +1,24 @@ +// Copyright 2019-present the Flutter authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import 'package:flutter/material.dart'; + +class InfiniteProcessPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Center( + child: Text('Welcome to the Infinite Process Page'), + ); + } +}