有用于实现欢迎屏幕的小部件吗?

时间:2020-08-25 17:28:12

标签: android flutter dart

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

我的方法如下:

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

答案on this question.中建议的“滑动容器” 但是我无法将容器“转换”为上述要求。

其他一些想法是使用flutter swiper,但我认为改编太困难了。

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

提前谢谢!

1 个答案:

答案 0 :(得分:0)

可能有更好的方法,但是...

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),
            ),
          ],
        ),
      ),
    );
  }
}