Flutter 启动页面

//启动页面
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
//项目首页
import 'package:firstflutter/base/Tabs.dart';

class LaunchPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return LaunchPageWidget();
  }
}
class LaunchPageWidget extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => LaunchState();
}

class LaunchState extends State<LaunchPageWidget> {
  final String launchImage =
      "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1093264713,2279663012&fm=26&gp=0.jpg";
  int _countdown = 10;
  late Timer _countdownTimer;

  @override
  void initState() {
    super.initState();
    _startRecordTime();
    print('初始化启动页面');
  }

  @override
  void dispose() {
    super.dispose();
    print('启动页面结束');
    if (_countdownTimer != null && _countdownTimer.isActive) {
      _countdownTimer.cancel();
    }
  }


  void _startRecordTime() {
    _countdownTimer = Timer.periodic(Duration(seconds: 1), (timer) {
      setState(() {
        if (_countdown <= 1) {
//          Navigator.of(context).pushNamed("/demo1");
          Navigator.of(context).pop();
          Navigator.of(context).push(MaterialPageRoute(builder: (context) {
            //项目首页
            return Tabs();
          }));
          _countdownTimer.cancel();
         // _countdownTimer = null;
        } else {
          _countdown -= 1;
        }
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark(),
      home: Scaffold(
        body: Stack(
          fit: StackFit.expand,
          children: <Widget>[
            Image.network(launchImage, fit: BoxFit.fill),
            Positioned(
              top: 30,
              right: 30,
              child: GestureDetector(
                onTap: (){

                  Navigator.of(context).pop();
                  Navigator.of(context).push(MaterialPageRoute(builder: (context) {
                    return Tabs();
                  }));
                  if (_countdownTimer != null && _countdownTimer.isActive) {
                    _countdownTimer.cancel();
                  }

                },


              child: Container(
                padding: EdgeInsets.fromLTRB(5, 2, 5, 2),
                decoration: BoxDecoration(
                  borderRadius: BorderRadius.circular(10),
                  color: Colors.black12,
                ),
                child: RichText(
                  text: TextSpan(children: <TextSpan>[
                    TextSpan(
                        text: '$_countdown',
                        style: TextStyle(
                          fontSize: 18,
                          color: Colors.blue,
                        )),
                    TextSpan(
                        text: '跳过',
                        style: TextStyle(
                          fontSize: 18,
                          color: Colors.red,
                        )),
                  ]),
                ),
              ),
              ),
            )
          ],
        ),
      ),
    );
  }
}

Flutter中Text点击事件

https://blog.csdn.net/honeylife/article/details/93200789

Flutter 中Text 的点击事件
大家看Text的源码,是没有点击事件的,那么,如果想添加点击事件怎么写呢,来看我的。

1、首先把Text放在一个容器里。比如Container中,
2、在Container的child中new new GestureDetector() ,你会发现GestureDetector 就有一个属性onTap ,你可以在onTap中定义。
3、什么,你想把方法抽离出去,OK ,明白了,那就得这么写了。

class RightView extends StatelessWidget {
  String title;
  VoidCallback rightClick;

  RightView({this.title, this.rightClick});

  @override
  Widget build(BuildContext context) {
    var containView;
    if (title != Null) {
      containView = new Container(
        alignment: Alignment.center,
        padding: EdgeInsets.all(10.0),
        child: GestureDetector(
          child: Text(
            this.title,
            style: TextStyle(color: Colors.white, fontSize: 18.0),
          ),
          onTap: this.rightClick,
        ),
      );
    } else {
      containView = Text("");
    }
    return containView;
  }
}

那么,问题来了,怎么用呢。

new RightView(
  title: "数据",
  rightClick: () {
    print("点我干什么");
  },
);

就得这么处理。
————————————————
版权声明:本文为CSDN博主「honeylife」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/honeylife/article/details/93200789

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Flutter应用程序中实现全屏启动页,你可以按照以下步骤进行操作: 1. 在`AndroidManifest.xml`文件中,为你的启动Activity添加以下属性: ```xml android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" ``` 这将使启动Activity以全屏模式显示。 2. 在`launch_background.xml`文件中,使用以下代码来设置全屏启动页: ```xml <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/splash_background" /> <!-- 添加你的启动页图像或Logo --> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher" /> </item> </layer-list> ``` 这将设置一个全屏的启动页背景,并在中间显示你的启动图像或Logo。 3. 在`styles.xml`文件中,为你的应用程序添加以下样式: ```xml <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background</item> </style> ``` 这将确保应用程序在启动时使用你的全屏启动页。 4. 在`MainActivity.kt`(或`MainActivity.java`)文件中,修改`onCreate()`方法,添加以下代码来设置透明状态栏和导航栏: ```kotlin import android.os.Build import android.os.Bundle import io.flutter.embedding.android.FlutterActivity class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.setDecorFitsSystemWindows(false) } else { window.decorView.systemUiVisibility = ( View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ) } } } ``` 这将使状态栏和导航栏透明,以实现全屏效果。 完成上述步骤后,你的Flutter应用程序的启动页将会显示为全屏。记得替换代码中的相应资源或样式文件,以适应你自己的项目需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值