• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'package:flutter/material.dart';
6import 'package:flutter_driver/driver_extension.dart';
7
8import 'keys.dart' as keys;
9
10void main() {
11  enableFlutterDriverExtension();
12
13  runApp(MyApp());
14}
15
16class MyApp extends StatelessWidget {
17  @override
18  Widget build(BuildContext context) {
19    return MaterialApp(
20      title: 'Keyboard & TextField',
21      theme: ThemeData(primarySwatch: Colors.blue),
22      home: MyHomePage(),
23    );
24  }
25}
26
27class MyHomePage extends StatefulWidget {
28  @override
29  _MyHomePageState createState() => _MyHomePageState();
30}
31
32class _MyHomePageState extends State<MyHomePage> {
33  final ScrollController _controller = ScrollController();
34  double offset = 0.0;
35
36  @override
37  void initState() {
38    super.initState();
39    _controller.addListener(() {
40      setState(() {
41        offset = _controller.offset;
42      });
43    });
44  }
45
46  @override
47  Widget build(BuildContext context) {
48    return Scaffold(
49      body: Column(
50        children: <Widget>[
51          Text('$offset',
52            key: const ValueKey<String>(keys.kOffsetText),
53          ),
54          Expanded(
55            child: ListView(
56              key: const ValueKey<String>(keys.kListView),
57              controller: _controller,
58              children: <Widget>[
59                Container(
60                  height: MediaQuery.of(context).size.height,
61                ),
62                const TextField(
63                  key: ValueKey<String>(keys.kDefaultTextField),
64                ),
65              ],
66            ),
67          ),
68        ],
69      ),
70    );
71  }
72}
73