1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import 'package:flutter/material.dart';
- /// Description: guide页
- /// Time : 05/01/2023 Monday
- /// Author : liuyuqi.gov@msn.cn
- class Walkthrough extends StatefulWidget {
- final title;
- final content;
- final imageIcon;
- final imagecolor;
- /// 构造函数
- /// title: 标题
- /// content: 内容
- /// imageIcon: 图标
- /// imagecolor: 图标颜色
- Walkthrough(
- {this.title,
- this.content,
- this.imageIcon,
- this.imagecolor = Colors.redAccent});
- @override
- WalkthroughState createState() {
- return WalkthroughState();
- }
- }
- class WalkthroughState extends State<Walkthrough>
- with SingleTickerProviderStateMixin {
- late Animation animation;
- late AnimationController animationController;
- @override
- void initState() {
- super.initState();
- animationController =
- AnimationController(vsync: this, duration: Duration(milliseconds: 500));
- animation = Tween(begin: -250.0, end: 0.0).animate(
- CurvedAnimation(parent: animationController, curve: Curves.easeInOut));
- animation.addListener(() => setState(() {}));
- animationController.forward();
- }
- @override
- void dispose() {
- super.dispose();
- animationController.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return Container(
- padding: const EdgeInsets.all(20.0),
- child: Material(
- animationDuration: Duration(milliseconds: 500),
- elevation: 2.0,
- borderRadius: BorderRadius.all(Radius.circular(5.0)),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: <Widget>[
- Transform(
- transform: Matrix4.translationValues(animation.value, 0.0, 0.0),
- child: Text(
- widget.title,
- style: TextStyle(
- fontSize: 20.0,
- fontWeight: FontWeight.bold,
- color: Colors.black),
- ),
- ),
- Transform(
- transform: Matrix4.translationValues(animation.value, 0.0, 0.0),
- child: Text(widget.content,
- softWrap: true,
- textAlign: TextAlign.center,
- style: TextStyle(
- fontWeight: FontWeight.normal,
- fontSize: 15.0,
- color: Colors.black)),
- ),
- Icon(
- widget.imageIcon,
- size: 100.0,
- color: widget.imagecolor,
- )
- ],
- ),
- ),
- );
- }
- }
|