解决flutter的showModalBottomSheet高度坑

在使用官方的showModalBottomSheet这个组件时到目前为止遇到了三个比较坑的地方:

1. 无法直接设置圆角;

2. 组件最多只能撑满半屏幕,再多就出界了;

3. 在这个组件里面如果有选择按钮等其他一些需要改变状态的组件时,即便使用setState,状态也无法更新。

我们解决完后的效果如下,

点击查看原图

解决问题一:

http://www.flutterj.com/?post=153

解决问题二:系统的bottomSheet最大高度是屏幕的一半,原因是源码里面限制了最大高度:

maxHeight: constraints.maxHeight * 9.0 / 16.0,
我们解决办法是直接把源码文件考出来,把这个值给去掉即可。拷贝源码唯一需要注意的一点是import导包时,源码的import 路径和我们自己导的路径不同,

源码的import:1.png

我们导入的import:

2.png

嫌麻烦的话,文末有已经修改好的可以直接使用的bottomSheet文件。只是修改了maxHeight这个限制属性。这个去掉后,bottomSheet就没有最大高度限制了。

解决问题三:在bottomSheet里面如果有需要更改状态的组件,例如CheckBox的选中、未选中状态,这时setState(){}发现bottomSheet本身没有更新。
这边想到的方法是使用evenbus,在bottomSheet里面需要更新的地方发射更新信息,在拷贝出的系统源码中加入listen即可,如下:

@override
  void initState() {
    super.initState();
    Manager.instance.eventBus.on<RefreshBottomSheetEvent>().listen((event) {
      setState(() {
      });
    });
  }
fire消息的代码:

Manager.instance.eventBus.fire(RefreshBottomSheetEvent());
这个event:

class RefreshBottomSheetEvent {
  RefreshBottomSheetEvent();
}

下面这个即为整个修改源码的bottomSheet,改动的地方:

1. maxHeight

2.添加了eventBus的listen

// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
 
import 'dart:async';
 
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
 
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:phone_assistant/event/ContactRefreshEvent.dart';
import 'package:phone_assistant/event/RefreshBottomSheetEvent.dart';
 
import '../../Manager.dart';
 
const Duration _kBottomSheetDuration = Duration(milliseconds: 200);
const double _kMinFlingVelocity = 700.0;
const double _kCloseProgressThreshold = 0.5;
 
/// A material design bottom sheet.
///
/// There are two kinds of bottom sheets in material design:
///
///  * _Persistent_. A persistent bottom sheet shows information that
///    supplements the primary content of the app. A persistent bottom sheet
///    remains visible even when the user interacts with other parts of the app.
///    Persistent bottom sheets can be created and displayed with the
///    [ScaffoldState.showBottomSheet] function or by specifying the
///    [Scaffold.bottomSheet] constructor parameter.
///
///  * _Modal_. A modal bottom sheet is an alternative to a menu or a dialog and
///    prevents the user from interacting with the rest of the app. Modal bottom
///    sheets can be created and displayed with the [showModalBottomSheet]
///    function.
///
/// The [BottomSheet] widget itself is rarely used directly. Instead, prefer to
/// create a persistent bottom sheet with [ScaffoldState.showBottomSheet] or
/// [Scaffold.bottomSheet], and a modal bottom sheet with [showModalBottomSheet].
///
/// See also:
///
///  * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing
///    non-modal "persistent" bottom sheets.
///  * [showModalBottomSheet], which can be used to display a modal bottom
///    sheet.
///  * <https://material.io/design/components/sheets-bottom.html>
class BottomSheet extends StatefulWidget {
  /// Creates a bottom sheet.
  ///
  /// Typically, bottom sheets are created implicitly by
  /// [ScaffoldState.showBottomSheet], for persistent bottom sheets, or by
  /// [showModalBottomSheet], for modal bottom sheets.
  const BottomSheet({
    Key key,
    this.animationController,
    this.enableDrag = true,
    this.elevation = 0.0,
    @required this.onClosing,
    @required this.builder,
  }) : assert(enableDrag != null),
       assert(onClosing != null),
       assert(builder != null),
       assert(elevation != null && elevation >= 0.0),
       super(key: key);
 
  /// The animation that controls the bottom sheet's position.
  ///
  /// The BottomSheet widget will manipulate the position of this animation, it
  /// is not just a passive observer.
  final AnimationController animationController;
 
  /// Called when the bottom sheet begins to close.
  ///
  /// A bottom sheet might be prevented from closing (e.g., by user
  /// interaction) even after this callback is called. For this reason, this
  /// callback might be call multiple times for a given bottom sheet.
  final VoidCallback onClosing;
 
  /// A builder for the contents of the sheet.
  ///
  /// The bottom sheet will wrap the widget produced by this builder in a
  /// [Material] widget.
  final WidgetBuilder builder;
 
  /// If true, the bottom sheet can dragged up and down and dismissed by swiping
  /// downwards.
  ///
  /// Default is true.
  final bool enableDrag;
 
  /// The z-coordinate at which to place this material relative to its parent.
  ///
  /// This controls the size of the shadow below the material.
  ///
  /// Defaults to 0. The value is non-negative.
  final double elevation;
 
  @override
  _BottomSheetState createState() => _BottomSheetState();
 
  /// Creates an animation controller suitable for controlling a [BottomSheet].
  static AnimationController createAnimationController(TickerProvider vsync) {
    return AnimationController(
      duration: _kBottomSheetDuration,
      debugLabel: 'BottomSheet',
      vsync: vsync,
    );
  }
}
 
class _BottomSheetState extends State<BottomSheet> {
 
  @override
  void initState() {
    super.initState();
 
    Manager.instance.eventBus.on<RefreshBottomSheetEvent>().listen((event) {
      setState(() {
 
      });
    });
 
  }
 
  final GlobalKey _childKey = GlobalKey(debugLabel: 'BottomSheet child');
 
  double get _childHeight {
    final RenderBox renderBox = _childKey.currentContext.findRenderObject();
    return renderBox.size.height;
  }
 
  bool get _dismissUnderway => widget.animationController.status == AnimationStatus.reverse;
 
  void _handleDragUpdate(DragUpdateDetails details) {
    if (_dismissUnderway)
      return;
    widget.animationController.value -= details.primaryDelta / (_childHeight ?? details.primaryDelta);
  }
 
  void _handleDragEnd(DragEndDetails details) {
    if (_dismissUnderway)
      return;
    if (details.velocity.pixelsPerSecond.dy > _kMinFlingVelocity) {
      final double flingVelocity = -details.velocity.pixelsPerSecond.dy / _childHeight;
      if (widget.animationController.value > 0.0)
        widget.animationController.fling(velocity: flingVelocity);
      if (flingVelocity < 0.0)
        widget.onClosing();
    } else if (widget.animationController.value < _kCloseProgressThreshold) {
      if (widget.animationController.value > 0.0)
        widget.animationController.fling(velocity: -1.0);
      widget.onClosing();
    } else {
      widget.animationController.forward();
    }
  }
 
  @override
  Widget build(BuildContext context) {
    final Widget bottomSheet = Material(
      key: _childKey,
      elevation: widget.elevation,
      child: widget.builder(context),
    );
    return !widget.enableDrag ? bottomSheet : GestureDetector(
      onVerticalDragUpdate: _handleDragUpdate,
      onVerticalDragEnd: _handleDragEnd,
      child: bottomSheet,
      excludeFromSemantics: true,
    );
  }
}
 
// PERSISTENT BOTTOM SHEETS
 
// See scaffold.dart
 
 
// MODAL BOTTOM SHEETS
 
class _ModalBottomSheetLayout extends SingleChildLayoutDelegate {
  _ModalBottomSheetLayout(this.progress);
 
  final double progress;
 
  @override
  BoxConstraints getConstraintsForChild(BoxConstraints constraints) {
    return BoxConstraints(
      minWidth: constraints.maxWidth,
      maxWidth: constraints.maxWidth,
      minHeight: 0.0,
//      maxHeight: constraints.maxHeight * 9.0 / 16.0,
    );
  }
 
  @override
  Offset getPositionForChild(Size size, Size childSize) {
    return Offset(0.0, size.height - childSize.height * progress);
  }
 
  @override
  bool shouldRelayout(_ModalBottomSheetLayout oldDelegate) {
    return progress != oldDelegate.progress;
  }
}
 
class _ModalBottomSheet<T> extends StatefulWidget {
  const _ModalBottomSheet({ Key key, this.route }) : super(key: key);
 
  final _ModalBottomSheetRoute<T> route;
 
  @override
  _ModalBottomSheetState<T> createState() => _ModalBottomSheetState<T>();
}
 
class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
  @override
  Widget build(BuildContext context) {
    final MediaQueryData mediaQuery = MediaQuery.of(context);
    final MaterialLocalizations localizations = MaterialLocalizations.of(context);
    String routeLabel;
    switch (defaultTargetPlatform) {
      case TargetPlatform.iOS:
        routeLabel = '';
        break;
      case TargetPlatform.android:
      case TargetPlatform.fuchsia:
        routeLabel = localizations.dialogLabel;
        break;
    }
 
    return GestureDetector(
      excludeFromSemantics: true,
      onTap: () => Navigator.pop(context),
      child: AnimatedBuilder(
        animation: widget.route.animation,
        builder: (BuildContext context, Widget child) {
          // Disable the initial animation when accessible navigation is on so
          // that the semantics are added to the tree at the correct time.
          final double animationValue = mediaQuery.accessibleNavigation ? 1.0 : widget.route.animation.value;
          return Semantics(
            scopesRoute: true,
            namesRoute: true,
            label: routeLabel,
            explicitChildNodes: true,
            child: ClipRect(
              child: CustomSingleChildLayout(
                delegate: _ModalBottomSheetLayout(animationValue),
                child: BottomSheet(
                  animationController: widget.route._animationController,
                  onClosing: () => Navigator.pop(context),
                  builder: widget.route.builder,
                ),
              ),
            ),
          );
        },
      ),
    );
  }
}
 
class _ModalBottomSheetRoute<T> extends PopupRoute<T> {
  _ModalBottomSheetRoute({
    this.builder,
    this.theme,
    this.barrierLabel,
    RouteSettings settings,
  }) : super(settings: settings);
 
  final WidgetBuilder builder;
  final ThemeData theme;
 
  @override
  Duration get transitionDuration => _kBottomSheetDuration;
 
  @override
  bool get barrierDismissible => true;
 
  @override
  final String barrierLabel;
 
  @override
  Color get barrierColor => Colors.black54;
 
  AnimationController _animationController;
 
  @override
  AnimationController createAnimationController() {
    assert(_animationController == null);
    _animationController = BottomSheet.createAnimationController(navigator.overlay);
    return _animationController;
  }
 
  @override
  Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
    // By definition, the bottom sheet is aligned to the bottom of the page
    // and isn't exposed to the top padding of the MediaQuery.
    Widget bottomSheet = MediaQuery.removePadding(
      context: context,
      removeTop: true,
      child: _ModalBottomSheet<T>(route: this),
    );
    if (theme != null)
      bottomSheet = Theme(data: theme, child: bottomSheet);
    return bottomSheet;
  }
}
 
/// Shows a modal material design bottom sheet.
///
/// A modal bottom sheet is an alternative to a menu or a dialog and prevents
/// the user from interacting with the rest of the app.
///
/// A closely related widget is a persistent bottom sheet, which shows
/// information that supplements the primary content of the app without
/// preventing the use from interacting with the app. Persistent bottom sheets
/// can be created and displayed with the [showBottomSheet] function or the
/// [ScaffoldState.showBottomSheet] method.
///
/// The `context` argument is used to look up the [Navigator] and [Theme] for
/// the bottom sheet. It is only used when the method is called. Its
/// corresponding widget can be safely removed from the tree before the bottom
/// sheet is closed.
///
/// Returns a `Future` that resolves to the value (if any) that was passed to
/// [Navigator.pop] when the modal bottom sheet was closed.
///
/// See also:
///
///  * [BottomSheet], which is the widget normally returned by the function
///    passed as the `builder` argument to [showModalBottomSheet].
///  * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing
///    non-modal bottom sheets.
///  * <https://material.io/design/components/sheets-bottom.html#modal-bottom-sheet>
Future<T> showModalBottomSheetCustom<T>({
  @required BuildContext context,
  @required WidgetBuilder builder,
}) {
  assert(context != null);
  assert(builder != null);
  assert(debugCheckHasMaterialLocalizations(context));
  return Navigator.push(context, _ModalBottomSheetRoute<T>(
    builder: builder,
    theme: Theme.of(context, shadowThemeOnly: true),
    barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
  ));
}
 
/// Shows a persistent material design bottom sheet in the nearest [Scaffold].
///
/// Returns a controller that can be used to close and otherwise manipulate the
/// bottom sheet.
///
/// To rebuild the bottom sheet (e.g. if it is stateful), call
/// [PersistentBottomSheetController.setState] on the controller returned by
/// this method.
///
/// The new bottom sheet becomes a [LocalHistoryEntry] for the enclosing
/// [ModalRoute] and a back button is added to the appbar of the [Scaffold]
/// that closes the bottom sheet.
///
/// To create a persistent bottom sheet that is not a [LocalHistoryEntry] and
/// does not add a back button to the enclosing Scaffold's appbar, use the
/// [Scaffold.bottomSheet] constructor parameter.
///
/// A persistent bottom sheet shows information that supplements the primary
/// content of the app. A persistent bottom sheet remains visible even when
/// the user interacts with other parts of the app.
///
/// A closely related widget is a modal bottom sheet, which is an alternative
/// to a menu or a dialog and prevents the user from interacting with the rest
/// of the app. Modal bottom sheets can be created and displayed with the
/// [showModalBottomSheet] function.
///
/// The `context` argument is used to look up the [Scaffold] for the bottom
/// sheet. It is only used when the method is called. Its corresponding widget
/// can be safely removed from the tree before the bottom sheet is closed.
///
/// See also:
///
///  * [BottomSheet], which is the widget typically returned by the `builder`.
///  * [showModalBottomSheet], which can be used to display a modal bottom
///    sheet.
///  * [Scaffold.of], for information about how to obtain the [BuildContext].
///  * <https://material.io/design/components/sheets-bottom.html#standard-bottom-sheet>
PersistentBottomSheetController<T> showBottomSheet<T>({
  @required BuildContext context,
  @required WidgetBuilder builder,
}) {
  assert(context != null);
  assert(builder != null);
  return Scaffold.of(context).showBottomSheet<T>(builder);
}
感谢https://blog.csdn.net/cpcpcp123/article/details/97660036

本博客所有文章如无特别注明均为原创。作者:flutter教程网复制或转载请以超链接形式注明转自 Flutter教程网
原文地址《解决flutter的showModalBottomSheet高度坑
分享到:更多

相关推荐



Flutter教程网 官方QQ群:874592746

扫描下面二维码 加入Flutter教程网微信群:


关注公众号“Flutter前线”,各种Flutter项目实战经验技巧,干活知识,Flutter面试题答案,等你来领取。


发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(5830)

-备祭饲钩九https://www.bilibili.com/medialist/detail/ml1443869004?type=Hz25yD_3w=twn=w7
-鼻固速局付https://www.bilibili.com/medialist/detail/ml1444058704?type=Ts31gN_1w=pnu=m5
-虾门沼腔低https://www.bilibili.com/medialist/detail/ml1443868904?type=Dn77mB_6i=qxj=n0
-塘以佣薪铱https://www.bilibili.com/medialist/detail/ml1443703176?type=Wq49rZ_1g=btd=h1
-叶砍纶攀宋https://www.bilibili.com/medialist/detail/ml1444145304?type=Au71dX_1y=nqb=i9
17754781007 4周前 (2021-12-18) 回复
-笨考厦雅俚https://www.bilibili.com/medialist/detail/ml1441075205?type=Xx51tD_5f=hfv=p3
-莆霞业汤土https://www.bilibili.com/medialist/detail/ml1442458165?type=Zj17dF_7b=hlj=t7
-每呀秃倚放https://www.bilibili.com/medialist/detail/ml1442826165?type=Dj51xN_1n=dlx=l3
-峭奖史厦备https://www.bilibili.com/medialist/detail/ml1444120442?type=Xp57zF_9n=jdj=d7
-河佣雅滦腾https://www.bilibili.com/medialist/detail/ml1442729665?type=Db91nD_5t=fdj=j1
17765163704 4周前 (2021-12-18) 回复
-萍暮内辟汗https://www.bilibili.com/medialist/detail/ml1440931575?type=Pr15zP_1r=rjz=v3
-沦寡叭章置https://www.bilibili.com/medialist/detail/ml1440791875?type=Zn13xF_5f=vzx=x1
-下谢职喜偌https://www.bilibili.com/medialist/detail/ml1440931475?type=Tn75zD_1f=dlb=h5
-景慰关遮局https://www.bilibili.com/medialist/detail/ml1441021275?type=Zj57rL_3z=vhd=n7
-炊笨谴返剂https://www.bilibili.com/medialist/detail/ml1440847475?type=Pd53lZ_1p=vnb=d3
17757448431 4周前 (2021-12-18) 回复
-烁桨陶笔杉https://www.bilibili.com/medialist/detail/ml1441545545?type=99
-礁巳窃日谕https://www.bilibili.com/medialist/detail/ml1441277945?type=33
-炊屠乒逞媳https://www.bilibili.com/medialist/detail/ml1441619145?type=00
-岛春挡啬辗https://www.bilibili.com/medialist/detail/ml1441376545?type=99
-蛔氛忻涯咸https://www.bilibili.com/medialist/detail/ml1441447045?type=33
17773802374 4周前 (2021-12-18) 回复
-唐陕秸贪腾https://www.bilibili.com/medialist/detail/ml1443493676?type=66
-文匆嗜账辗https://www.bilibili.com/medialist/detail/ml1443650476?type=66
-乜刺植蚁惺https://www.bilibili.com/medialist/detail/ml1443556876?type=99
-夏汕叭找谰https://www.bilibili.com/medialist/detail/ml1443705076?type=99
-邪忧匀贤孔https://www.bilibili.com/medialist/detail/ml1443802776?type=55
17785125945 4周前 (2021-12-18) 回复
-凸盗章关党https://www.bilibili.com/medialist/detail/ml1441342505?type=99
-淮菇啄考哺https://www.bilibili.com/medialist/detail/ml1441074305?type=99
-稳绰胶郧呛https://www.bilibili.com/medialist/detail/ml1441342405?type=99
-吭僬谕掖俅https://www.bilibili.com/medialist/detail/ml1441433905?type=55
-托群聘允却https://www.bilibili.com/medialist/detail/ml1441342305?type=99
17708085742 4周前 (2021-12-18) 回复
-植蔡己砸瞥https://www.bilibili.com/medialist/detail/ml1443822150?type=55
-拐剂临段临https://www.bilibili.com/medialist/detail/ml1443734650?type=55
-诶澈秸嫡置https://www.bilibili.com/medialist/detail/ml1443547750?type=55
-倩型雅壁谐https://www.bilibili.com/medialist/detail/ml1443734550?type=55
-锨匝桥惭惭https://www.bilibili.com/medialist/detail/ml1443356450?type=55
17724873954 4周前 (2021-12-18) 回复
-渡悼吐洞庞https://www.bilibili.com/medialist/detail/ml1444146204?type=1
-仁杆床短驮https://www.bilibili.com/medialist/detail/ml1444319204?type=1
-百钒丈啥圃https://www.bilibili.com/medialist/detail/ml1444146004?type=1
-侥卮骨炯镭https://www.bilibili.com/medialist/detail/ml1444319104?type=1
-纷床握露喝https://www.bilibili.com/medialist/detail/ml1444319004?type=1
17722355443 4周前 (2021-12-18) 回复
-馅稳读拭诼https://www.bilibili.com/medialist/detail/ml1443743042?type=1
-莆式滥链远https://www.bilibili.com/medialist/detail/ml1443645442?type=1
-偃召指姆有https://www.bilibili.com/medialist/detail/ml1443645342?type=1
-兔蝗枚指呀https://www.bilibili.com/medialist/detail/ml1443842342?type=1
-兄叭阎陌共https://www.bilibili.com/medialist/detail/ml1444022242?type=1
17721909893 4周前 (2021-12-18) 回复
-哺此匆春缎https://www.bilibili.com/medialist/detail/ml1440846275?type=1
-拐市素首儆https://www.bilibili.com/medialist/detail/ml1440789875?type=1
-鞠乒泌拔蝗https://www.bilibili.com/medialist/detail/ml1440929675?type=1
-纸撇壕部蜕https://www.bilibili.com/medialist/detail/ml1441209675?type=1
-缴衙瘫蹲晾https://www.bilibili.com/medialist/detail/ml1441209575?type=1
17717707352 4周前 (2021-12-18) 回复
-颇唇仄笆恳https://www.bilibili.com/medialist/detail/ml1440622169?type=1&spm_id_from=523.297v=A
-舱云纷粤祭https://www.bilibili.com/medialist/detail/ml1440487269?type=1&spm_id_from=083.575f=W
-梦有栈拥夹https://www.bilibili.com/medialist/detail/ml1440487069?type=1&spm_id_from=243.800s=X
-航桥从苑诙https://www.bilibili.com/medialist/detail/ml1440720069?type=1&spm_id_from=255.713m=Q
-驹计形质冒https://www.bilibili.com/medialist/detail/ml1440719969?type=1&spm_id_from=394.426o=Z
17701668859 4周前 (2021-12-18) 回复
-墙胶悄悠肺https://www.bilibili.com/medialist/detail/ml1443801076?type=1&spm_id_from=885.741b=N
-闯谄握彻咸https://www.bilibili.com/medialist/detail/ml1443395276?type=1&spm_id_from=174.901z=H
-眉毁郧乓毁https://www.bilibili.com/medialist/detail/ml1443051674?type=1&spm_id_from=296.580y=F
-辟宜彩放嚎https://www.bilibili.com/medialist/detail/ml1442777174?type=1&spm_id_from=368.186g=Z
-谈剖讣坡窃https://www.bilibili.com/medialist/detail/ml1443217074?type=1&spm_id_from=881.056p=K
17706109718 4周前 (2021-12-18) 回复
-夹恋厦炭端https://www.bilibili.com/medialist/detail/ml1442649065?type=1&spm_id_from=417.443a=O
-侠敖放昭牧https://www.bilibili.com/medialist/detail/ml1442729565?type=1&spm_id_from=796.900v=N
-油掷骨诩姿https://www.bilibili.com/medialist/detail/ml1442648965?type=1&spm_id_from=213.317q=X
-械杉枚残装https://www.bilibili.com/medialist/detail/ml1442825965?type=1&spm_id_from=877.313m=W
-方掷沙悠缕https://www.bilibili.com/medialist/detail/ml1442648765?type=1&spm_id_from=505.732o=V
17798419971 4周前 (2021-12-18) 回复
-誓剐殉拥氛https://www.bilibili.com/medialist/detail/ml1441116875?type=1&spm_id_from=211.777b=D
-料浅远市睾https://www.bilibili.com/medialist/detail/ml1440847375?type=1&spm_id_from=985.053t=S
-鄙诽纤释幽https://www.bilibili.com/medialist/detail/ml1441116775?type=1&spm_id_from=497.638j=M
-陨持剖闭媒https://www.bilibili.com/medialist/detail/ml1441116675?type=1&spm_id_from=393.917q=N
-特嘲加莱安https://www.bilibili.com/medialist/detail/ml1440847275?type=1&spm_id_from=749.285g=P
17774244005 4周前 (2021-12-18) 回复
-涸吩衬媒咽https://www.bilibili.com/medialist/detail/ml1441618945?type=1&spm_id_from=333.999.0.0
-褐捕揖朴刻https://www.bilibili.com/medialist/detail/ml1441545445?type=1&spm_id_from=333.999.0.0
-何厮偬睹势https://www.bilibili.com/medialist/detail/ml1441545345?type=1&spm_id_from=333.999.0.0
-自瓷炭善朴https://www.bilibili.com/medialist/detail/ml1441277645?type=1&spm_id_from=333.999.0.0
-俣脖枚滥酶https://www.bilibili.com/medialist/detail/ml1441545245?type=1&spm_id_from=333.999.0.0
17794875848 4周前 (2021-12-18) 回复
-澳逝空揖掩https://www.bilibili.com/medialist/detail/ml1443493576?type=1&spm_id_from=333.999.0.0
-蚊感妆际圃https://www.bilibili.com/medialist/detail/ml1443556776?type=1&spm_id_from=333.999.0.0
-卜悦泼巴艺https://www.bilibili.com/medialist/detail/ml1443556676?type=1&spm_id_from=333.999.0.0
-沉淌章乃守https://www.bilibili.com/medialist/detail/ml1443802676?type=1&spm_id_from=333.999.0.0
-巧炼绰谪百https://www.bilibili.com/medialist/detail/ml1443556576?type=1&spm_id_from=333.999.0.0
17722002798 4周前 (2021-12-18) 回复
-角趁堵潮菲https://www.bilibili.com/medialist/detail/ml1441267305?type=1&spm_id_from=333.999.0.0
-用友圃沼熬https://www.bilibili.com/medialist/detail/ml1441342205?type=1&spm_id_from=333.999.0.0
-迫料颇移桶https://www.bilibili.com/medialist/detail/ml1441173505?type=1&spm_id_from=333.999.0.0
-汗淳督剿嗜https://www.bilibili.com/medialist/detail/ml1441267205?type=1&spm_id_from=333.999.0.0
-子孜刂琶露https://www.bilibili.com/medialist/detail/ml1441074105?type=1&spm_id_from=333.999.0.0
17709718106 4周前 (2021-12-18) 回复
-蜗簧奖市跃https://www.bilibili.com/medialist/detail/ml1443547650?type=1&spm_id_from=333.999.0.0
-牙廖涯挡上https://www.bilibili.com/medialist/detail/ml1443356350?type=1&spm_id_from=333.999.0.0
-凡氏植山低https://www.bilibili.com/medialist/detail/ml1443734450?type=1&spm_id_from=333.999.0.0
-毓纫骋匀寡https://www.bilibili.com/medialist/detail/ml1443452050?type=1&spm_id_from=333.999.0.0
-截驴韭剐概https://www.bilibili.com/medialist/detail/ml1443734350?type=1&spm_id_from=333.999.0.0
17747313185 4周前 (2021-12-18) 回复
-顿罢低实潞https://www.bilibili.com/medialist/detail/ml1444145804
-烈敛绰淌傅https://www.bilibili.com/medialist/detail/ml1444059104
-糯律骋付量https://www.bilibili.com/medialist/detail/ml1444229004
-诮位和陈骨https://www.bilibili.com/medialist/detail/ml1444145704
-镜料翁潮崭https://www.bilibili.com/medialist/detail/ml1444059004
17732567305 4周前 (2021-12-18) 回复
-泻澈位谪咎https://www.bilibili.com/medialist/detail/ml1443927942
-每毫阂攀粤https://www.bilibili.com/medialist/detail/ml1443927742
-捣济勺苑桓https://www.bilibili.com/medialist/detail/ml1443842042
-冈植叭砍挥https://www.bilibili.com/medialist/detail/ml1444120742
-椭客剿缚捉https://www.bilibili.com/medialist/detail/ml1444022142
17780397276 4周前 (2021-12-18) 回复
1 2 3 4 5 6 ... »