basic_project.dart 4.48 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 <3.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 28 29 30 31
  Future<void> main() async {
    while (true) {
      runApp(new MyApp());
      await Future.delayed(const Duration(milliseconds: 50));
    }
  }
32

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

  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 <3.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 <3.0.0'
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161

  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) {
      runApp(new MyApp());
      await Future.delayed(const Duration(milliseconds: 50));
      Timeline.instantSync('main');
    }
  }

  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      topLevelFunction();
      return new MaterialApp( // BUILD BREAKPOINT
        title: 'Flutter Demo',
        home: new Container(),
      );
    }
  }

  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 <3.0.0'
173 174 175 176

  dependencies:
    flutter:
      sdk: flutter
177 178 179

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

  @override
  final String main = r'''
184
  // @dart = 2.8
185
  // generated package does not support null safety.
186
  import 'dart:async';
187
  import 'package:flutter_gen/flutter_gen.dart';
188

189 190 191
  void main() {}
  ''';
}
192

193 194 195 196 197 198
class BasicProjectWithUnaryMain extends Project {

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

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