天天看點

去除Scrollview的回彈效果

import 'dart:io';
import 'package:flutter/material.dart';

class ScrollBarDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('ScrollBarDemo'),
        elevation: 0.0,
      ),
      // ScrollConfiguration 
      body: ScrollConfiguration(
      // CusBehavior 自定義
        behavior: CusBehavior(),
        child: SingleChildScrollTestRoute()
      ),
    );
  }
}

class SingleChildScrollTestRoute extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    return Scrollbar(
      child: SingleChildScrollView(
      	// NeverScrollableScrollPhysics 去除滾動行為,不會滾動
        // physics: NeverScrollableScrollPhysics(),
        padding: EdgeInsets.all(16.0),
        child: Center(
          child: Column(
            children: str.split('').map((e) => Text(e, textScaleFactor: 2.0)).toList()
          ),
        )
      ),
    );
  }
}

// ScrollBehavior 繼承
class CusBehavior extends ScrollBehavior {
  @override
  Widget buildViewportChrome(BuildContext context, Widget child, AxisDirection axisDirection) {
  	// 如果是谷歌平台下的安卓和fuchsia 去除預設行為
    if (Platform.isAndroid || Platform.isFuchsia) return child;
    return super.buildViewportChrome(context, child, axisDirection);
  }
}
           

以上隻是使用方法,點選檢視更為詳細具體的講解