栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Flutter中自定义Slider小部件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Flutter中自定义Slider小部件?

我记得,我也遇到了同样的挑战。

我创建了自己的wave滑块:

import 'dart:math';import 'package:flutter/material.dart';List<int> bars = [];const barWidth = 5.0;double screenWidth;int numberOfBars;void main() {  runApp(MyApp());}class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      home: Home(),    );  }}void randomNumberGenerator() {  Random r = Random();  for (var i = 0; i < numberOfBars; i++) {    bars.add(r.nextInt(40) + 10);  }}class Home extends StatelessWidget {  @override  Widget build(BuildContext context) {    if (bars.isEmpty) {      screenWidth = MediaQuery.of(context).size.width;      numberOfBars = screenWidth ~/ barWidth;      randomNumberGenerator();    }    return Container(child: WaveSlider());  }}class WaveSlider extends StatefulWidget {  @override  State<StatefulWidget> createState() => WaveSliderState();}class WaveSliderState extends State<WaveSlider> {  double bar2Position = 180.0;  _onTapDown(TapDownDetails details) {    var x = details.globalPosition.dx;    print("tap down " + x.toString());    setState(() {      bar2Position = x;    });  }  @override  Widget build(BuildContext context) {    int barItem = 0;    return Scaffold(      body: Center(        child: Stack(          alignment: Alignment.centerLeft,          children: <Widget>[ GestureDetector(   onTapDown: (TapDownDetails details) => _onTapDown(details),   onHorizontalDragUpdate: (DragUpdateDetails details) {     setState(() {       bar2Position = details.globalPosition.dx;     });   },   child: Container(     child: Row(       crossAxisAlignment: CrossAxisAlignment.end,       mainAxisAlignment: MainAxisAlignment.start,       children: bars.map((int height) {         Color color = barItem + 1 < bar2Position / barWidth  ? Colors.deepPurple  : Colors.blueGrey;         barItem++;         return Container(color: color,height: height.toDouble(),width: 5.0,         );       }).toList(),     ),   ), ),          ],        ),      ),    );  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406994.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号