首页 > 解决方案 > 是否有实现欢迎屏幕的小部件?

问题描述

我正在尝试实现一个“欢迎屏幕”,每次打开应用程序时都会显示该屏幕。因此,在“应用程序介绍屏幕”的意义上,它不是常见的欢迎屏幕。欢迎屏幕应滑动到顶部,以在主页上“进入”应用程序。因此,我希望这个小部件位于主页的顶部,可能在堆栈小部件中,因此当欢迎页面滑动到顶部时,主页是部分可见的。之后,欢迎屏幕不再可见。所以我的问题是,是否有提供这些可能性的小部件。

我的方法如下:

我已经尝试过 PageView,但这不支持两个屏幕的覆盖(堆栈)。

在这个问题的答案中建议的“滑动容器” 但我无法将容器“转换”为上述要求。

其他一些想法是使用颤振滑动器,但我认为适应太难了。

因此,我希望得到一些我可以用来实现它的库的建议。

先感谢您!

标签: androidflutterdart

解决方案


可能有更好的方法来做到这一点,但......

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome Demo',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final Widget welcome = WelcomeView();
  final Widget home = HomeView();
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Stack(
          children: [
            Positioned.fill(child: home),
            Positioned(bottom: 100, child: welcome),
          ],
        ),
      ),
    );
  }
}

class HomeView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.red,
      child: Center(
        child: Text(
          'HomeView',
          style: TextStyle(fontSize: 28),
          textAlign: TextAlign.center,
        ),
      ),
    );
  }
}

class WelcomeView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Dismissible(
      key: UniqueKey(),
      direction: DismissDirection.up,
      child: Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        color: Colors.blue,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Welcome!!!',
              style: TextStyle(fontSize: 28),
            ),
          ],
        ),
      ),
    );
  }
}

推荐阅读