|  | // 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. | 
|  |  | 
|  | // Template: dev/snippets/config/templates/stateful_widget_scaffold.tmpl | 
|  | // | 
|  | // Comment lines marked with "▼▼▼" and "▲▲▲" are used for authoring | 
|  | // of samples, and may be ignored if you are just exploring the sample. | 
|  |  | 
|  | // Flutter code sample for CupertinoScrollbar | 
|  | // | 
|  | //*************************************************************************** | 
|  | //* ▼▼▼▼▼▼▼▼ description ▼▼▼▼▼▼▼▼ (do not modify or remove section marker) | 
|  |  | 
|  | // When `isAlwaysShown` is true, the scrollbar thumb will remain visible without the | 
|  | // fade animation. This requires that a [ScrollController] is provided to controller, | 
|  | // or that the [PrimaryScrollController] is available. | 
|  |  | 
|  | //* ▲▲▲▲▲▲▲▲ description ▲▲▲▲▲▲▲▲ (do not modify or remove section marker) | 
|  | //*************************************************************************** | 
|  |  | 
|  | //**************************************************************************** | 
|  | //* ▼▼▼▼▼▼▼▼ code-imports ▼▼▼▼▼▼▼▼ (do not modify or remove section marker) | 
|  |  | 
|  | import 'package:flutter/cupertino.dart'; | 
|  |  | 
|  | //* ▲▲▲▲▲▲▲▲ code-imports ▲▲▲▲▲▲▲▲ (do not modify or remove section marker) | 
|  | //**************************************************************************** | 
|  |  | 
|  | import 'package:flutter/material.dart'; | 
|  |  | 
|  | void main() => runApp(const MyApp()); | 
|  |  | 
|  | /// This is the main application widget. | 
|  | class MyApp extends StatelessWidget { | 
|  | const MyApp({Key? key}) : super(key: key); | 
|  |  | 
|  | static const String _title = 'Flutter Code Sample'; | 
|  |  | 
|  | @override | 
|  | Widget build(BuildContext context) { | 
|  | return MaterialApp( | 
|  | title: _title, | 
|  | home: Scaffold( | 
|  | appBar: AppBar(title: const Text(_title)), | 
|  | body: const MyStatefulWidget(), | 
|  | ), | 
|  | ); | 
|  | } | 
|  | } | 
|  |  | 
|  | /// This is the stateful widget that the main application instantiates. | 
|  | class MyStatefulWidget extends StatefulWidget { | 
|  | const MyStatefulWidget({Key? key}) : super(key: key); | 
|  |  | 
|  | @override | 
|  | State<MyStatefulWidget> createState() => _MyStatefulWidgetState(); | 
|  | } | 
|  |  | 
|  | /// This is the private State class that goes with MyStatefulWidget. | 
|  | class _MyStatefulWidgetState extends State<MyStatefulWidget> { | 
|  | //******************************************************************** | 
|  | //* ▼▼▼▼▼▼▼▼ code ▼▼▼▼▼▼▼▼ (do not modify or remove section marker) | 
|  |  | 
|  | final ScrollController _controllerOne = ScrollController(); | 
|  |  | 
|  | @override | 
|  | Widget build(BuildContext context) { | 
|  | return CupertinoScrollbar( | 
|  | thickness: 6.0, | 
|  | thicknessWhileDragging: 10.0, | 
|  | radius: const Radius.circular(34.0), | 
|  | radiusWhileDragging: Radius.zero, | 
|  | controller: _controllerOne, | 
|  | isAlwaysShown: true, | 
|  | child: ListView.builder( | 
|  | controller: _controllerOne, | 
|  | itemCount: 120, | 
|  | itemBuilder: (BuildContext context, int index) { | 
|  | return Center( | 
|  | child: Text('item $index'), | 
|  | ); | 
|  | }, | 
|  | ), | 
|  | ); | 
|  | } | 
|  |  | 
|  | //* ▲▲▲▲▲▲▲▲ code ▲▲▲▲▲▲▲▲ (do not modify or remove section marker) | 
|  | //******************************************************************** | 
|  |  | 
|  | } |