大佬教程收集整理的这篇文章主要介绍了dart – Flutter自定义范围滑块,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
主要问题是范围滑块位于容器行的顶部,它应该在“选定”部分更改颜色.
这是我现在拥有的:
class BeatLyricsPage extends StatefulWidget { final Beat beat; BeatLyricsPage(this.beat); @override _BeatLyricsPageState createState() => _BeatLyricsPageState(beat); } class _BeatLyricsPageState extends State<BeatLyricsPage> { final Beat beat; final _kPicHeight = 190.0; // used in _buildPageheading to add the beat key and beat bpm Widget _buildBeaTinfoItem(String text) => DecoratedBox( decoration: BoxDecoration( border: Border.all(color: MyColor.white,width: 1.0),borderRadius: BorderRadius.circular(4.0),),child: Padding( padding: EdgeInsets.symmetric(vertical: 3.0,horizontal: 12.0),child: Text(text,style: TextStyle(color: MyColor.white,fontSize: 10.0,fontWeight: FontWeight.w600)),); final _kAu@L_@R_772_11239@_8@ControlsWidth = 180.0; final _kAu@L_@R_772_11239@_8@ControlsHeight = 36.0; final _kAu@L_@R_772_11239@_8@ControlsmainButtonSize = 56.0; Widget _buildAu@L_@R_772_11239@_8@Controls(BuildContext context) => Positioned( left: (MediaQuery.of(context).size.width / 2) - (_kAu@L_@R_772_11239@_8@ControlsWidth / 2),top: _kPicHeight - (_kAu@L_@R_772_11239@_8@ControlsHeight / 2),child: Stack( overflow: Overflow.visible,children: [ Container( width: _kAu@L_@R_772_11239@_8@ControlsWidth,height: _kAu@L_@R_772_11239@_8@ControlsHeight,decoration: BoxDecoration(color: MyColor.darkGrey,borderRadius: BorderRadius.circular(100.0)),padding: EdgeInsets.symmetric(horizontal: LayoutSpacing.sm),child: Row( children: [ CButtonLike(beatId: beat.id),Spacer(),GestureDetector( behavior: HitTESTBehavior.opaque,child: Icon(BeatPulseIcons.cart),onTap: () => Navigator.push(context,MaterialPageRoute(builder: (_) => LicenSEOptionsPage(beat))),],// ****** MAIN BUTTON (Play/PausE) ****** Positioned( left: (_kAu@L_@R_772_11239@_8@ControlsWidth / 2) - (_kAu@L_@R_772_11239@_8@ControlsmainButtonSize / 2),top: (_kAu@L_@R_772_11239@_8@ControlsHeight - _kAu@L_@R_772_11239@_8@ControlsmainButtonSizE) / 2,child: Container( height: _kAu@L_@R_772_11239@_8@ControlsmainButtonSize,width: _kAu@L_@R_772_11239@_8@ControlsmainButtonSize,decoration: BoxDecoration( gradient: LinearGradient(begin: Alignment.topLeft,colors: [MyColor.priMary,Color(0xFFf80d0a)]),child: CButtonPlay(),) ],); Widget _buildWaveForm() { // creates a random list of doubles,"fake data" var rng = Random(); final List waveFormData = []; for (var i = 0; i < 90; i++) { waveFormData.add(rng.nexTint(45).toDouble()); } // player bloc final playerBloc = BlocProvider.getPlayerBloc(context); // renders return Container( height: _kPicHeight,padding: EdgeInsets.symmetric(vertical: LayoutSpacing.xxxl),child: Row( mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment: CrossAxisAlignment.end,children: [ // current playing second StreamBuilder<double>( stream: playerBloc.playingSecond,initialData: 0.0,builder: (_,playingSecondSnapshot) { // current beat playing return StreamBuilder<Beat>( stream: playerBloc.playingBeat,playingBeatSnapshot) { final playingBeat = playingBeatSnapshot.data; // if the beat playing is the same as the beat SELEcted for the lyrics,show playing seconds if (playingBeat?.id == beat.id) return Text(secondsToTime(playingSecondSnapshot.data),style: MyFontStyle.sizeXxs); // otherwise show 0:00 else return Text(secondsToTime(0),style: MyFontStyle.sizeXxs); },); },SizedBox(width: LayoutSpacing.xs),Row( mainAxisAlignment: MainAxisAlignment.center,children: waveFormData .map((waveFormDataIndeX) => Container( height: waveFormDataIndex > 5.0 ? waveFormDataIndex : 5.0,width: 2,color: MyColor.white,margin: EdgeInsets.only(right: 1),)) .toList(),Text(secondsToTime(beat.length),style: MyFontStyle.sizeXxs),); } Widget _buildPageheading(BuildContext context,{@@L_262_27@ String imageUrl}) => Stack( children: [ column( children: [ Hero( tag: MyKeys.makePlayerCoverKey(beat.id),child: Opacity( opacity: 0.3,child: Container( height: _kPicHeight,decoration: BoxDecoration( image: DecorationImage(image: CachedNetworkImageProvider(imageUrl),fit: BoxFit.cover),Container(color: MyColor.BACkground,height: LayoutSpacing.xl) ],Padding( padding: EdgeInsets.all(LayoutSpacing.xs),child: Row( mainAxisAlignment: MainAxisAlignment.end,children: [ _buildBeaTinfoItem(beat.key),SizedBox(width: 4.0),_buildBeaTinfoItem('${Beat.bpm} BPM'),_buildAu@L_@R_772_11239@_8@Controls(context),_buildWaveForm(),); }
可悲的是,我无法使用您的代码示例.相反,我创建了一个最基本的示例,如下所示.如果您花一点时间阅读,我相信您可以将其转移到您的应用程序.
import 'dart:math'; import 'package:Flutter/material.dart'; List<int> bars = []; void main() { // generate random bars Random r = Random(); for (var i = 0; i < 50; i++) { bars.add(r.nexTint(200)); } runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Home(),); } } class Home extends StatefulWidget { @override State<StatefulWidget> createState() => HomeState(); } class HomeState extends State<Home> { static const barWidth = 5.0; double bar1Position = 60.0; double bar2Position = 180.0; @override Widget build(BuildContext context) { int i = 0; return Scaffold( body: Center( child: Stack( alignment: Alignment.centerLeft,children: <Widget>[ Row( crossAxisAlignment: CrossAxisAlignment.center,mainAxisAlignment: MainAxisAlignment.start,children: bars.map((int height) { Color color = i >= bar1Position / barWidth && i <= bar2Position / barWidth ? Colors.deepPurple : Colors.blueGrey; i++; return Container( color: color,height: height.toDouble(),width: 5.0,); }).toList(),Bar( position: bar2Position,callBACk: (DragupdateDetails details) { setState(() { bar2Position += details.delta.dx; }); },Bar( position: bar1Position,callBACk: (DragupdateDetails details) { setState(() { bar1Position += details.delta.dx; }); },); } } class Bar extends StatelessWidget { final double position; final GestureDragupdateCallBACk callBACk; Bar({this.position,this.callBACk}); @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.only(left: position >= 0.0 ? position : 0.0),child: GestureDetector( onHorizontalDragupdate: callBACk,child: Container( color: Colors.red,height: 200.0,); } }
以上是大佬教程为你收集整理的dart – Flutter自定义范围滑块全部内容,希望文章能够帮你解决dart – Flutter自定义范围滑块所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。