不,那不是
Draggable小部件的目标。而是使用a
GestureDetector来检测阻力。然后将其与类似
Align内容移动的内容结合起来
这是一个基于您当前代码的完全可用的滑块。
import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Slider(), ), ), ); }}class Slider extends StatefulWidget { final ValueChanged<double> valueChanged; Slider({this.valueChanged}); @override SliderState createState() { return new SliderState(); }}class SliderState extends State<Slider> { ValueNotifier<double> valueListener = ValueNotifier(.0); @override void initState() { valueListener.addListener(notifyParent); super.initState(); } void notifyParent() { if (widget.valueChanged != null) { widget.valueChanged(valueListener.value); } } @override Widget build(BuildContext context) { return Container( color: Colors.green, height: 50.0, padding: EdgeInsets.symmetric(horizontal: 40.0), child: Builder( builder: (context) { final handle = GestureDetector( onHorizontalDragUpdate: (details) { valueListener.value = (valueListener.value +details.delta.dx / context.size.width) .clamp(.0, 1.0); }, child: FlutterLogo(size: 50.0), ); return AnimatedBuilder( animation: valueListener, builder: (context, child) { return Align( alignment: Alignment(valueListener.value * 2 - 1, .5), child: child, ); }, child: handle, ); }, ), ); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)