优化 ListView 组件渲染

场景:在使用 ListView 组件时候,如果渲染多个 input 组件,在滚动时会出现 input 的值被销毁; 原因在于 listView 组件的垃圾回收机制,如果子组件脱离了视口会在内存中销毁,等下次会被重新渲染

使用 SingleChildScrollView 替代 ListView

SingleChildScrollView (
children:[]
)

优化 Listview 组件的水波纹效果

需要封装一个 NoShadowScrollBehavior 方法

// 自定义组件取消水波纹
import 'package:flutter/material.dart';

class NoShadowScrollBehavior extends ScrollBehavior {
 @override
 Widget buildViewportChrome(BuildContext context, Widget child, AxisDirection axisDirection) {
   switch (getPlatform(context)) {
     case TargetPlatform.iOS:
     case TargetPlatform.macOS:
       return child;
     case TargetPlatform.android:
     case TargetPlatform.fuchsia:
     case TargetPlatform.linux:
     case TargetPlatform.windows:
       return GlowingOverscrollIndicator(
         child: child,
         //不显示头部水波纹
         showLeading: false,
         //不显示尾部水波纹
         showTrailing: false,
         axisDirection: axisDirection,
         color: Theme.of(context).accentColor,
      );
  }
}
}

使用 ScrollConfiguration 组件包裹 ListView 组件

ScrollConfiguration(
   behavior: NoShadowScrollBehavior(),
   child:ListView(
  children:[]
  )
)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇