颤抖 - 拖下来解雇

Two*_*San 10 flutter

我想像这样拖拽页面.但我不知道是否使用gesturedraggable以任何方式我不知道如何在向下拖动时显示上一页.谁知道该怎么办?

.

And*_*eev 21

使用以下方法向上/向下拖动以关闭页面的简单示例Dismissible

Dismissible(
    direction: DismissDirection.vertical,
    key: const Key('key'),
    onDismissed: (_) => Navigator.of(context).pop(),
    child: ...
)
Run Code Online (Sandbox Code Playgroud)


Roh*_*eja 9

您可以Dismissible为此使用小部件。文档示例:https : //flutter.io/docs/cookbook/gestures/dismissible


sul*_*rza 6

我正在为自己解决同样的问题

在此处输入图片说明

这是上面演示的dartpad链接

完整的源代码

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    title: 'Navigation Basics',
    home: FirstRoute(),
  ));
}

class FirstRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('First Route'),
      ),
      body: Center(
        child: RaisedButton(
          child: Text('Open route'),
          onPressed: () {
            showGeneralDialog(
              barrierLabel: "Label",
              barrierDismissible: false,
              barrierColor: Colors.black.withOpacity(0.5),
              transitionDuration: Duration(milliseconds: 400),
              context: context,
              pageBuilder: (context, anim1, anim2) {
                return SecondRoute();
              },
              transitionBuilder: (context, anim1, anim2, child) {
                return SlideTransition(
                  position: Tween(begin: Offset(0, 1), end: Offset(0, 0))
                      .animate(anim1),
                  child: child,
                );
              },
            );
          },
        ),
      ),
    );
  }
}

class SecondRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Dismissible(
      direction: DismissDirection.vertical,
      key: const Key('key'),
      onDismissed: (_) => Navigator.of(context).pop(),
      child: Scaffold(
        appBar: AppBar(
          title: Text("Second Route"),
        ),
        body: Align(
          alignment: Alignment.center,
          child: Container(
            height: 300,
            width: 300,
            child: SizedBox.expand(child: FlutterLogo()),
            margin: EdgeInsets.only(bottom: 50, left: 12, right: 12),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(40),
            ),
          ),
        ),
      ),
    );
  }
}

Run Code Online (Sandbox Code Playgroud)

注意:未针对SecondRoute具有 (ListViewSingleChildScroll) 的情况进行测试,但我认为在这种情况下,如果您从 AppBar 或 ListView 未覆盖的位置开始拖动,它应该按预期关闭