| // Copyright 2014 The Flutter 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 'package:flutter/material.dart'; | |
| /// Flutter code sample for [RawScrollbar.shape]. | |
| void main() => runApp(const ShapeExampleApp()); | |
| class ShapeExampleApp extends StatelessWidget { | |
| const ShapeExampleApp({super.key}); | |
| @override | |
| Widget build(BuildContext context) { | |
| return const MaterialApp(home: ShapeExample()); | |
| } | |
| } | |
| class ShapeExample extends StatelessWidget { | |
| const ShapeExample({super.key}); | |
| @override | |
| Widget build(BuildContext context) { | |
| return Scaffold( | |
| body: RawScrollbar( | |
| shape: const StadiumBorder( | |
| side: BorderSide(color: Colors.brown, width: 3.0), | |
| ), | |
| thickness: 15.0, | |
| thumbColor: Colors.blue, | |
| thumbVisibility: true, | |
| child: ListView( | |
| // On mobile platforms, setting primary to true is not required, as | |
| // the PrimaryScrollController automatically attaches to vertical | |
| // ScrollPositions. On desktop platforms however, using the | |
| // PrimaryScrollController requires ScrollView.primary be set. | |
| primary: true, | |
| physics: const BouncingScrollPhysics(), | |
| children: List<Text>.generate( | |
| 100, | |
| (int index) => Text((index * index).toString()), | |
| ), | |
| ), | |
| ), | |
| ); | |
| } | |
| } |