basic_project.dart 4.38 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'project.dart';
6

7
class BasicProject extends Project {
8 9 10 11

  @override
  final String pubspec = '''
  name: test
12
  environment:
13
    sdk: '>=2.12.0-0 <4.0.0'
14

15 16 17 18 19 20 21
  dependencies:
    flutter:
      sdk: flutter
  ''';

  @override
  final String main = r'''
22 23
  import 'dart:async';

24
  import 'package:flutter/material.dart';
25

26 27
  Future<void> main() async {
    while (true) {
28
      runApp(MyApp());
29 30 31
      await Future.delayed(const Duration(milliseconds: 50));
    }
  }
32

33 34 35 36
  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      topLevelFunction();
37
      return MaterialApp( // BUILD BREAKPOINT
38
        title: 'Flutter Demo',
39
        home: Container(),
40 41 42 43 44
      );
    }
  }

  topLevelFunction() {
45
    print("topLevelFunction"); // TOP LEVEL BREAKPOINT
46 47 48
  }
  ''';

49 50
  Uri get buildMethodBreakpointUri => mainDart;
  int get buildMethodBreakpointLine => lineContaining(main, '// BUILD BREAKPOINT');
51

52
  Uri get topLevelFunctionBreakpointUri => mainDart;
53
  int get topLevelFunctionBreakpointLine => lineContaining(main, '// TOP LEVEL BREAKPOINT');
54
}
55

56 57 58 59 60 61 62 63 64 65
/// A project that throws multiple exceptions during Widget builds.
///
/// A repro for the issue at https://github.com/Dart-Code/Dart-Code/issues/3448
/// where Hot Restart could become stuck on exceptions and never complete.
class BasicProjectThatThrows extends Project {

  @override
  final String pubspec = '''
  name: test
  environment:
66
    sdk: '>=2.12.0-0 <4.0.0'
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117

  dependencies:
    flutter:
      sdk: flutter
  ''';

  @override
  final String main = r'''
  import 'package:flutter/material.dart';

  void a() {
    throw Exception('a');
  }

  void b() {
    try {
      a();
    } catch (e) {
      throw Exception('b');
    }
  }

  void c() {
    try {
      b();
    } catch (e) {
      throw Exception('c');
    }
  }

  void main() {
    runApp(App());
  }

  class App extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      c();
      return MaterialApp(
        debugShowCheckedModeBanner: false,
        title: 'Study Flutter',
        theme: ThemeData(
          primarySwatch: Colors.green,
        ),
        home: Container(),
      );
    }
  }
  ''';
}

118 119 120 121 122
class BasicProjectWithTimelineTraces extends Project {
  @override
  final String pubspec = '''
  name: test
  environment:
123
    sdk: '>=2.12.0-0 <4.0.0'
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

  dependencies:
    flutter:
      sdk: flutter
  ''';

  @override
  final String main = r'''
  import 'dart:async';
  import 'dart:developer';

  import 'package:flutter/material.dart';

  Future<void> main() async {
    while (true) {
139
      runApp(MyApp());
140 141 142 143 144 145 146 147 148
      await Future.delayed(const Duration(milliseconds: 50));
      Timeline.instantSync('main');
    }
  }

  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      topLevelFunction();
149
      return MaterialApp( // BUILD BREAKPOINT
150
        title: 'Flutter Demo',
151
        home: Container(),
152 153 154 155 156 157 158 159 160 161
      );
    }
  }

  topLevelFunction() {
    print("topLevelFunction"); // TOP LEVEL BREAKPOINT
  }
  ''';
}

162 163 164 165 166
class BasicProjectWithFlutterGen extends Project {
  @override
  final String generatedFile = '''
    String x = "a";
  ''';
167 168 169 170 171

  @override
  final String pubspec = '''
  name: test
  environment:
172
    sdk: '>=2.12.0-0 <4.0.0'
173 174 175 176

  dependencies:
    flutter:
      sdk: flutter
177 178 179

  flutter:
    generate: true
180 181 182 183 184
  ''';

  @override
  final String main = r'''
  import 'dart:async';
185
  import 'package:flutter_gen/flutter_gen.dart';
186

187 188 189
  void main() {}
  ''';
}
190

191 192 193 194 195 196
class BasicProjectWithUnaryMain extends Project {

  @override
  final String pubspec = '''
  name: test
  environment:
197
    sdk: '>=2.12.0-0 <4.0.0'
198 199 200 201 202 203 204 205 206
  dependencies:
    flutter:
      sdk: flutter
  ''';

  @override
  final String main = r'''
  import 'dart:async';
  import 'package:flutter/material.dart';
207 208
  Future<void> main(List<String> args) async {
    while (true) {
209
      runApp(MyApp());
210 211 212 213 214 215 216
      await Future.delayed(const Duration(milliseconds: 50));
    }
  }
  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      topLevelFunction();
217
      return MaterialApp( // BUILD BREAKPOINT
218
        title: 'Flutter Demo',
219
        home: Container(),
220 221 222 223 224 225 226 227
      );
    }
  }
  topLevelFunction() {
    print("topLevelFunction"); // TOP LEVEL BREAKPOINT
  }
  ''';
}