这是如何拖动模态底部工作表的完整示例。
这个想法是由流构建器包装工作表的内容,并在发生拖动时更新流。让我知道您是否需要进一步的解释。
import 'package:flutter/material.dart';import 'dart:async';void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('My App'), ), body: MyWidget(), ), ); }}StreamController<double> controller = StreamController.broadcast();class MyWidget extends StatefulWidget{ @override _MyWidgetState createState() => _MyWidgetState();}class _MyWidgetState extends State<MyWidget> { double position; @override Widget build(BuildContext context) { return Container( child: Center( child: RaisedButton( child: Text('Show Buttom Sheet'), onPressed: () { showModalBottomSheet(context: context, builder: (context){ return StreamBuilder( stream: controller.stream, builder:(context,snapshot) => GestureDetector( onVerticalDragUpdate: (DragUpdateDetails details){position = MediaQuery.of(context).size.height- details.globalPosition.dy;print('position dy = ${position}');position.isNegative?Navigator.pop(context):controller.add(position); }, behavior: HitTestBehavior.translucent,child:Container( color: Colors.red, height: snapshot.hasData ? snapshot.data:200.0, width: double.infinity, child: Text('Child'), )), ); }); }), ), ); }}


