├── .gitignore
├── .metadata
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── finder
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── logo.png
└── me.jpg
├── images
├── bm1.png
├── bm2.png
├── dm1.png
└── dm2.png
├── lib
├── colors
│ └── color.dart
├── constants
│ └── platform_urls.dart
├── main.dart
├── pages
│ ├── about_page.dart
│ └── main_page.dart
└── widget
│ ├── finder_about_image.dart
│ ├── finder_about_textinfo.dart
│ ├── finder_appbar.dart
│ ├── finder_drawer_header.dart
│ ├── finder_list_tile.dart
│ ├── finder_logo.dart
│ ├── finder_platform_box.dart
│ ├── finder_text_font.dart
│ └── finder_textfield.dart
├── pubspec.lock
├── pubspec.yaml
└── test
└── widget_test.dart
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .packages
31 | .pub-cache/
32 | .pub/
33 | /build/
34 |
35 | # Symbolication related
36 | app.*.symbols
37 |
38 | # Obfuscation related
39 | app.*.map.json
40 |
41 | # Android Studio will place build artifacts here
42 | /android/app/debug
43 | /android/app/profile
44 | /android/app/release
45 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled.
5 |
6 | version:
7 | revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
8 | channel: master
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
17 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
18 | - platform: android
19 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
20 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
21 | - platform: ios
22 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
23 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
24 | - platform: linux
25 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
26 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
27 | - platform: macos
28 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
29 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
30 | - platform: web
31 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
32 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
33 | - platform: windows
34 | create_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
35 | base_revision: 7211ca09d1f82ae452321c49fc81051eb645bb59
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Finder
6 |
Written With Flutter 3.7.0-7.0.pre.1
7 |
8 | Operating System | Version | Download
9 | ------------- | ------------- | -------------
10 | Android | 10 | [Download Apk](https://codeload.github.com/shervinbdndev/Finder/zip/refs/heads/apk)
11 |
12 |
13 |
14 |
15 | A Mobile application to find IDs in some Social Platforms.
16 |
17 |
18 |
19 |
20 |
Preview
21 |

22 |

23 |

24 |

25 |
26 |
27 |
28 |
29 |
30 | Precendences
31 |
32 | - [x] Able to Show If any ID is on Github.
33 | - [x] Able to Show If any ID is on Pypi.
34 | - [ ] Able to Show If any ID is on Reddit.
35 | - [ ] Able to Show If any ID is on Twitter.
36 | - [ ] Able to Show If any ID is on Linkedin.
37 | - [ ] Able to Show If any ID is on Instagram.
38 |
39 |
40 |
41 | Language and technologies used in This Project
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | WorkSpace
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at
17 | # https://dart-lang.github.io/linter/lints/index.html.
18 | #
19 | # Instead of disabling a lint rule for the entire project in the
20 | # section below, it can also be suppressed for a single line of code
21 | # or a specific dart file by using the `// ignore: name_of_lint` and
22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 | # producing the lint.
24 | rules:
25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 |
28 | # Additional information about this file can be found at
29 | # https://dart.dev/guides/language/analysis-options
30 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply plugin: 'kotlin-android'
26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27 |
28 | android {
29 | compileSdkVersion flutter.compileSdkVersion
30 | ndkVersion flutter.ndkVersion
31 |
32 | compileOptions {
33 | sourceCompatibility JavaVersion.VERSION_1_8
34 | targetCompatibility JavaVersion.VERSION_1_8
35 | }
36 |
37 | kotlinOptions {
38 | jvmTarget = '1.8'
39 | }
40 |
41 | sourceSets {
42 | main.java.srcDirs += 'src/main/kotlin'
43 | }
44 |
45 | defaultConfig {
46 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
47 | applicationId "com.example.finder"
48 | // You can update the following values to match your application needs.
49 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
50 | minSdkVersion flutter.minSdkVersion
51 | targetSdkVersion flutter.targetSdkVersion
52 | versionCode flutterVersionCode.toInteger()
53 | versionName flutterVersionName
54 | }
55 |
56 | buildTypes {
57 | release {
58 | // TODO: Add your own signing config for the release build.
59 | // Signing with the debug keys for now, so `flutter run --release` works.
60 | signingConfig signingConfigs.debug
61 | }
62 | }
63 | }
64 |
65 | flutter {
66 | source '../..'
67 | }
68 |
69 | dependencies {
70 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
71 | }
72 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
15 |
19 |
23 |
24 |
25 |
26 |
27 |
28 |
30 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/finder/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.finder
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.7.10'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.2.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | }
25 | subprojects {
26 | project.evaluationDependsOn(':app')
27 | }
28 |
29 | task clean(type: Delete) {
30 | delete rootProject.buildDir
31 | }
32 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/assets/logo.png
--------------------------------------------------------------------------------
/assets/me.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/assets/me.jpg
--------------------------------------------------------------------------------
/images/bm1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/images/bm1.png
--------------------------------------------------------------------------------
/images/bm2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/images/bm2.png
--------------------------------------------------------------------------------
/images/dm1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/images/dm1.png
--------------------------------------------------------------------------------
/images/dm2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shervinbdndev/Finder/28d6b419a2a349c161104ef1dc0327d41a7fccc0/images/dm2.png
--------------------------------------------------------------------------------
/lib/colors/color.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class FinderColors {
4 | // static const Color themePurple = Color(0xff800080);
5 | static const Color themePurple = Colors.deepPurple;
6 | static const Color lightGreen = Color(0xff9EDAB1);
7 | static const Color darkGreen = Color(0xff2C643D);
8 | static const Color lightRed = Color.fromRGBO(239, 154, 154, 1);
9 | static const Color darkRed = Color.fromRGBO(198, 40, 40, 1);
10 | static const Color grey = Color.fromARGB(255, 124, 123, 123);
11 | }
12 |
--------------------------------------------------------------------------------
/lib/constants/platform_urls.dart:
--------------------------------------------------------------------------------
1 | const String github = 'https://github.com';
2 | const String reddit = 'https://reddit.com';
3 | const String pypi = 'https://pypi.org';
4 | const String linkedin = 'https://linkedin.com';
5 | const String instagram = 'https://instagram.com';
6 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 | import 'package:flutter/material.dart';
3 | import 'package:provider/provider.dart';
4 | import 'package:finder/pages/main_page.dart';
5 | import 'package:internet_connection_checker/internet_connection_checker.dart';
6 |
7 | void main() {
8 | WidgetsFlutterBinding.ensureInitialized();
9 | if (Platform.isAndroid) {
10 | runApp(const MyApp());
11 | } else {
12 | exit(0);
13 | }
14 | }
15 |
16 | class MyApp extends StatelessWidget {
17 | const MyApp({super.key});
18 |
19 | @override
20 | Widget build(BuildContext context) {
21 | return StreamProvider(
22 | create: (_) {
23 | return InternetConnectionChecker().onStatusChange;
24 | },
25 | initialData: InternetConnectionStatus.connected,
26 | child: MaterialApp(
27 | title: 'Finder',
28 | debugShowCheckedModeBanner: !true,
29 | theme: ThemeData(brightness: Brightness.light),
30 | darkTheme: ThemeData(brightness: Brightness.dark),
31 | home: const Finder(),
32 | ),
33 | );
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/lib/pages/about_page.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 | import 'package:flutter/material.dart';
3 | import 'package:finder/colors/color.dart';
4 | import 'package:finder/pages/main_page.dart';
5 | import 'package:finder/widget/finder_appbar.dart';
6 | import 'package:finder/widget/finder_list_tile.dart';
7 | import 'package:finder/widget/finder_text_font.dart';
8 | import 'package:finder/widget/finder_about_image.dart';
9 | import 'package:finder/widget/finder_drawer_header.dart';
10 | import 'package:finder/widget/finder_about_textinfo.dart';
11 | import 'package:font_awesome_flutter/font_awesome_flutter.dart';
12 |
13 | class FinderAboutPage extends StatelessWidget {
14 | const FinderAboutPage({super.key});
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return Scaffold(
19 | resizeToAvoidBottomInset: false,
20 | appBar: const FinderAppbar(),
21 | drawer: Drawer(
22 | child: ListView(
23 | padding: const EdgeInsets.all(2.0),
24 | children: [
25 | const FinderDrawerHeader(),
26 | FinderListTile(
27 | icon: const FaIcon(
28 | FontAwesomeIcons.house,
29 | size: 20.0,
30 | color: FinderColors.grey,
31 | ),
32 | text: const FinderTextFont(
33 | text: 'Home',
34 | fontSize: 20.0,
35 | fontColor: FinderColors.grey,
36 | weight: FontWeight.normal,
37 | ),
38 | ontap: () {
39 | Navigator.push(
40 | context,
41 | MaterialPageRoute(
42 | builder: (context) => const Finder(),
43 | ),
44 | );
45 | },
46 | ),
47 | FinderListTile(
48 | icon: const FaIcon(
49 | FontAwesomeIcons.circleInfo,
50 | size: 20.0,
51 | color: FinderColors.themePurple,
52 | ),
53 | text: const FinderTextFont(
54 | text: 'About',
55 | fontSize: 20.0,
56 | fontColor: FinderColors.themePurple,
57 | weight: FontWeight.normal,
58 | ),
59 | ontap: () {
60 | Navigator.push(
61 | context,
62 | MaterialPageRoute(
63 | builder: (context) => const FinderAboutPage(),
64 | ),
65 | );
66 | },
67 | ),
68 | FinderListTile(
69 | icon: const FaIcon(
70 | FontAwesomeIcons.outdent,
71 | size: 20.0,
72 | color: FinderColors.grey,
73 | ),
74 | text: const FinderTextFont(
75 | text: 'Exit',
76 | fontSize: 20.0,
77 | fontColor: FinderColors.grey,
78 | weight: FontWeight.normal,
79 | ),
80 | ontap: () {
81 | exit(0);
82 | },
83 | ),
84 | ],
85 | ),
86 | ),
87 | body: Center(
88 | child: Column(
89 | mainAxisAlignment: MainAxisAlignment.center,
90 | children: const [
91 | FinderAboutImage(),
92 | Padding(
93 | padding: EdgeInsets.only(top: 30.0),
94 | child: FinderAboutTextInfo(),
95 | ),
96 | ],
97 | ),
98 | ),
99 | );
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/lib/pages/main_page.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 | import 'package:http/http.dart' as http;
3 | import 'package:flutter/material.dart';
4 | import 'package:provider/provider.dart';
5 | import 'package:finder/colors/color.dart';
6 | import 'package:finder/pages/about_page.dart';
7 | import 'package:finder/widget/finder_logo.dart';
8 | import 'package:finder/widget/finder_appbar.dart';
9 | import 'package:finder/constants/platform_urls.dart';
10 | import 'package:finder/widget/finder_textfield.dart';
11 | import 'package:finder/widget/finder_list_tile.dart';
12 | import 'package:finder/widget/finder_text_font.dart';
13 | import 'package:http_status_code/http_status_code.dart';
14 | import 'package:finder/widget/finder_platform_box.dart';
15 | import 'package:finder/widget/finder_drawer_header.dart';
16 | import 'package:font_awesome_flutter/font_awesome_flutter.dart';
17 | import 'package:internet_connection_checker/internet_connection_checker.dart';
18 |
19 | class Finder extends StatefulWidget {
20 | const Finder({super.key});
21 |
22 | @override
23 | State createState() => _FinderState();
24 | }
25 |
26 | class _FinderState extends State {
27 | final TextEditingController _controller = TextEditingController();
28 |
29 | FinderPlatformBox gitContainer = FinderPlatformBox(
30 | backgroundColor: Colors.white,
31 | color: FinderColors.grey,
32 | icon: FontAwesomeIcons.github,
33 | statusIcon: FontAwesomeIcons.circleInfo,
34 | text: 'Github',
35 | );
36 |
37 | FinderPlatformBox pypiContainer = FinderPlatformBox(
38 | backgroundColor: Colors.white,
39 | color: FinderColors.grey,
40 | icon: FontAwesomeIcons.python,
41 | statusIcon: FontAwesomeIcons.circleInfo,
42 | text: 'Pypi',
43 | );
44 |
45 | FinderPlatformBox redditContainer = FinderPlatformBox(
46 | backgroundColor: Colors.white,
47 | color: FinderColors.grey,
48 | icon: FontAwesomeIcons.redditAlien,
49 | statusIcon: FontAwesomeIcons.circleInfo,
50 | text: 'Reddit',
51 | );
52 |
53 | FinderPlatformBox linkedinContainer = FinderPlatformBox(
54 | backgroundColor: Colors.white,
55 | color: FinderColors.grey,
56 | icon: FontAwesomeIcons.linkedin,
57 | statusIcon: FontAwesomeIcons.circleInfo,
58 | text: 'Linkedin',
59 | );
60 |
61 | FinderPlatformBox instagramContainer = FinderPlatformBox(
62 | backgroundColor: Colors.white,
63 | color: FinderColors.grey,
64 | icon: FontAwesomeIcons.instagram,
65 | statusIcon: FontAwesomeIcons.circleInfo,
66 | text: 'Instagram',
67 | );
68 |
69 | @override
70 | Widget build(BuildContext context) {
71 | return Scaffold(
72 | resizeToAvoidBottomInset: false,
73 | appBar: const FinderAppbar(),
74 | drawer: Drawer(
75 | child: ListView(
76 | padding: const EdgeInsets.all(2.0),
77 | children: [
78 | const FinderDrawerHeader(),
79 | FinderListTile(
80 | icon: const FaIcon(
81 | FontAwesomeIcons.house,
82 | size: 20.0,
83 | color: FinderColors.themePurple,
84 | ),
85 | text: const FinderTextFont(
86 | text: 'Home',
87 | fontSize: 20.0,
88 | fontColor: FinderColors.themePurple,
89 | weight: FontWeight.normal,
90 | ),
91 | ontap: () {
92 | Navigator.push(
93 | context,
94 | MaterialPageRoute(
95 | builder: (context) => const Finder(),
96 | ),
97 | );
98 | },
99 | ),
100 | FinderListTile(
101 | icon: const FaIcon(
102 | FontAwesomeIcons.circleInfo,
103 | size: 20.0,
104 | color: FinderColors.grey,
105 | ),
106 | text: const FinderTextFont(
107 | text: 'About',
108 | fontSize: 20.0,
109 | fontColor: FinderColors.grey,
110 | weight: FontWeight.normal,
111 | ),
112 | ontap: () {
113 | Navigator.push(
114 | context,
115 | MaterialPageRoute(
116 | builder: (context) => const FinderAboutPage(),
117 | ),
118 | );
119 | },
120 | ),
121 | FinderListTile(
122 | icon: const FaIcon(
123 | FontAwesomeIcons.outdent,
124 | size: 20.0,
125 | color: FinderColors.grey,
126 | ),
127 | text: const FinderTextFont(
128 | text: 'Exit',
129 | fontSize: 20.0,
130 | fontColor: FinderColors.grey,
131 | weight: FontWeight.normal,
132 | ),
133 | ontap: () {
134 | exit(0);
135 | },
136 | ),
137 | ],
138 | ),
139 | ),
140 | body: SafeArea(
141 | child: Column(
142 | crossAxisAlignment: CrossAxisAlignment.center,
143 | children: [
144 | Padding(
145 | padding: const EdgeInsets.only(top: 50.0),
146 | child: Row(
147 | mainAxisAlignment: MainAxisAlignment.center,
148 | children: const [
149 | FinderLogo(
150 | width: 150.0,
151 | height: 150.0,
152 | ),
153 | ],
154 | ),
155 | ),
156 | Padding(
157 | padding: const EdgeInsets.only(top: 40.0),
158 | child: FinderTextField(
159 | controller: _controller,
160 | ontap: () async {
161 | var username = _controller.text;
162 | var githubResult =
163 | await http.get(Uri.parse('$github/$username'));
164 | var pypiResult =
165 | await http.get(Uri.parse('$pypi/user/$username'));
166 | // var instagramResult =
167 | // await http.get(Uri.parse('$instagram/$username'));
168 | // var redditResult =
169 | // await http.get(Uri.parse('$reddit/user/$username'));
170 | if (githubResult.statusCode == StatusCode.OK) {
171 | setState(() {
172 | gitContainer = const FinderPlatformBox(
173 | backgroundColor: FinderColors.lightGreen,
174 | color: FinderColors.darkGreen,
175 | icon: FontAwesomeIcons.github,
176 | statusIcon: FontAwesomeIcons.check,
177 | text: 'Github',
178 | );
179 | });
180 | } else if (githubResult.statusCode ==
181 | StatusCode.NOT_FOUND) {
182 | setState(() {
183 | gitContainer = const FinderPlatformBox(
184 | backgroundColor: FinderColors.lightRed,
185 | color: FinderColors.darkRed,
186 | icon: FontAwesomeIcons.github,
187 | statusIcon: FontAwesomeIcons.xmark,
188 | text: 'Github',
189 | );
190 | });
191 | }
192 | if (pypiResult.statusCode == StatusCode.OK) {
193 | setState(() {
194 | pypiContainer = const FinderPlatformBox(
195 | backgroundColor: FinderColors.lightGreen,
196 | color: FinderColors.darkGreen,
197 | icon: FontAwesomeIcons.python,
198 | statusIcon: FontAwesomeIcons.check,
199 | text: 'Pypi',
200 | );
201 | });
202 | } else if (pypiResult.statusCode == StatusCode.NOT_FOUND) {
203 | setState(() {
204 | pypiContainer = const FinderPlatformBox(
205 | backgroundColor: FinderColors.lightRed,
206 | color: FinderColors.darkRed,
207 | icon: FontAwesomeIcons.python,
208 | statusIcon: FontAwesomeIcons.xmark,
209 | text: 'Pypi',
210 | );
211 | });
212 | }
213 | // if (instagramResult.statusCode == StatusCode.OK) {
214 | // setState(() {
215 | // instagramContainer = const FinderPlatformBox(
216 | // backgroundColor: FinderColors.lightGreen,
217 | // color: FinderColors.darkGreen,
218 | // icon: FontAwesomeIcons.python,
219 | // statusIcon: FontAwesomeIcons.check,
220 | // text: 'Instagram',
221 | // );
222 | // });
223 | // } else if (instagramResult.statusCode ==
224 | // StatusCode.NOT_FOUND) {
225 | // setState(() {
226 | // instagramContainer = const FinderPlatformBox(
227 | // backgroundColor: FinderColors.lightRed,
228 | // color: FinderColors.darkRed,
229 | // icon: FontAwesomeIcons.python,
230 | // statusIcon: FontAwesomeIcons.xmark,
231 | // text: 'Instagram',
232 | // );
233 | // });
234 | // }
235 | // if (redditResult.statusCode == StatusCode.OK) {
236 | // setState(() {
237 | // redditContainer = const FinderPlatformBox(
238 | // backgroundColor: FinderColors.lightGreen,
239 | // color: FinderColors.darkGreen,
240 | // icon: FontAwesomeIcons.redditAlien,
241 | // statusIcon: FontAwesomeIcons.check,
242 | // text: 'Reddit',
243 | // );
244 | // });
245 | // } else if (redditResult.statusCode == StatusCode.NOT_FOUND) {
246 | // setState(() {
247 | // redditContainer = const FinderPlatformBox(
248 | // backgroundColor: FinderColors.lightRed,
249 | // color: FinderColors.darkRed,
250 | // icon: FontAwesomeIcons.redditAlien,
251 | // statusIcon: FontAwesomeIcons.xmark,
252 | // text: 'Reddit',
253 | // );
254 | // });
255 | // }
256 | }),
257 | ),
258 | Padding(
259 | padding: const EdgeInsets.only(top: 40.0),
260 | child: Column(
261 | children: [
262 | Row(
263 | mainAxisAlignment: MainAxisAlignment.spaceAround,
264 | crossAxisAlignment: CrossAxisAlignment.center,
265 | children: [
266 | redditContainer,
267 | instagramContainer,
268 | ],
269 | ),
270 | const SizedBox(height: 10.0),
271 | Row(
272 | mainAxisAlignment: MainAxisAlignment.spaceAround,
273 | crossAxisAlignment: CrossAxisAlignment.center,
274 | children: [
275 | gitContainer,
276 | pypiContainer,
277 | ],
278 | ),
279 | const SizedBox(height: 10.0),
280 | Row(
281 | mainAxisAlignment: MainAxisAlignment.spaceAround,
282 | crossAxisAlignment: CrossAxisAlignment.center,
283 | children: [
284 | const FinderPlatformBox(
285 | backgroundColor: Colors.white,
286 | color: FinderColors.grey,
287 | icon: FontAwesomeIcons.twitter,
288 | statusIcon: FontAwesomeIcons.circleInfo,
289 | text: 'Twitter',
290 | ),
291 | linkedinContainer,
292 | ],
293 | ),
294 | ],
295 | ),
296 | ),
297 | Provider.of(context) ==
298 | InternetConnectionStatus.disconnected
299 | ? const Padding(
300 | padding: EdgeInsets.only(top: 85.0),
301 | child: FinderTextFont(
302 | text: 'Not Connected',
303 | fontSize: 20.0,
304 | fontColor: FinderColors.darkRed,
305 | weight: FontWeight.bold,
306 | ),
307 | )
308 | : const Padding(
309 | padding: EdgeInsets.only(top: 85.0),
310 | child: FinderTextFont(
311 | text: 'Connected',
312 | fontSize: 20.0,
313 | fontColor: FinderColors.darkGreen,
314 | weight: FontWeight.bold,
315 | ),
316 | ),
317 | ],
318 | ),
319 | ),
320 | );
321 | }
322 | }
323 |
--------------------------------------------------------------------------------
/lib/widget/finder_about_image.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:finder/colors/color.dart';
3 |
4 | class FinderAboutImage extends StatelessWidget {
5 | const FinderAboutImage({super.key});
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return Container(
10 | decoration: BoxDecoration(
11 | borderRadius: BorderRadius.circular(100.0),
12 | border: Border.all(
13 | color: FinderColors.themePurple,
14 | width: 4.0,
15 | ),
16 | ),
17 | child: ClipRRect(
18 | borderRadius: BorderRadius.circular(100.0),
19 | child: Image.asset(
20 | 'assets/me.jpg',
21 | fit: BoxFit.cover,
22 | scale: 12.0,
23 | ),
24 | ),
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/widget/finder_about_textinfo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:finder/colors/color.dart';
3 | import 'package:url_launcher/url_launcher.dart';
4 | import 'package:finder/constants/platform_urls.dart';
5 | import 'package:finder/widget/finder_text_font.dart';
6 |
7 | class FinderAboutTextInfo extends StatelessWidget {
8 | const FinderAboutTextInfo({super.key});
9 |
10 | @override
11 | Widget build(BuildContext context) {
12 | var brightness = MediaQuery.of(context).platformBrightness;
13 |
14 | return SizedBox(
15 | width: double.infinity,
16 | child: Column(
17 | mainAxisAlignment: MainAxisAlignment.center,
18 | crossAxisAlignment: CrossAxisAlignment.center,
19 | children: [
20 | Row(
21 | mainAxisAlignment: MainAxisAlignment.center,
22 | children: [
23 | const FinderTextFont(
24 | text: 'Creator:',
25 | fontSize: 25.0,
26 | fontColor: FinderColors.themePurple,
27 | weight: FontWeight.bold,
28 | ),
29 | const SizedBox(width: 10.0),
30 | FinderTextFont(
31 | text: 'Shervin Badanara',
32 | fontSize: 20.0,
33 | fontColor:
34 | brightness == Brightness.dark ? Colors.white : Colors.black,
35 | weight: FontWeight.normal,
36 | ),
37 | ],
38 | ),
39 | const SizedBox(height: 20.0),
40 | Row(
41 | mainAxisAlignment: MainAxisAlignment.center,
42 | children: [
43 | const FinderTextFont(
44 | text: 'Github:',
45 | fontSize: 25.0,
46 | fontColor: FinderColors.themePurple,
47 | weight: FontWeight.bold,
48 | ),
49 | const SizedBox(width: 10.0),
50 | Material(
51 | color: Colors.transparent,
52 | child: InkWell(
53 | onTap: () async {
54 | await launchUrl(
55 | Uri.parse('$github/shervinbdndev/'),
56 | );
57 | },
58 | child: FinderTextFont(
59 | text: '@shervinbdndev',
60 | fontSize: 20.0,
61 | fontColor: brightness == Brightness.dark
62 | ? Colors.white
63 | : Colors.black,
64 | weight: FontWeight.normal,
65 | ),
66 | ),
67 | ),
68 | ],
69 | ),
70 | ],
71 | ),
72 | );
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/lib/widget/finder_appbar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:finder/colors/color.dart';
3 | import 'package:finder/widget/finder_text_font.dart';
4 |
5 | class FinderAppbar extends StatelessWidget implements PreferredSizeWidget {
6 | const FinderAppbar({super.key});
7 |
8 | @override
9 | Size get preferredSize => const Size.fromHeight(60.0);
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | return AppBar(
14 | backgroundColor: FinderColors.themePurple,
15 | title: const FinderTextFont(
16 | text: 'Finder',
17 | fontSize: 25.0,
18 | fontColor: Colors.white,
19 | weight: FontWeight.bold,
20 | ),
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widget/finder_drawer_header.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:finder/colors/color.dart';
3 | import 'package:finder/widget/finder_logo.dart';
4 | import 'package:finder/widget/finder_text_font.dart';
5 |
6 | class FinderDrawerHeader extends StatelessWidget {
7 | const FinderDrawerHeader({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | return DrawerHeader(
12 | child: Row(
13 | children: [
14 | Column(
15 | mainAxisAlignment: MainAxisAlignment.center,
16 | children: const [
17 | FinderTextFont(
18 | text: 'Finder',
19 | fontSize: 40.0,
20 | fontColor: FinderColors.themePurple,
21 | weight: FontWeight.bold,
22 | ),
23 | SizedBox(height: 0.5),
24 | Padding(
25 | padding: EdgeInsets.only(right: 58.0),
26 | child: FinderTextFont(
27 | text: 'Version 1.0.0',
28 | fontSize: 10.0,
29 | fontColor: FinderColors.themePurple,
30 | weight: FontWeight.bold,
31 | ),
32 | ),
33 | ],
34 | ),
35 | const SizedBox(width: 8.0),
36 | const FinderLogo(
37 | width: 50.0,
38 | height: 50.0,
39 | ),
40 | ],
41 | ),
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/lib/widget/finder_list_tile.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class FinderListTile extends StatelessWidget {
4 | final Widget icon;
5 | final Widget text;
6 | final VoidCallback ontap;
7 |
8 | const FinderListTile({
9 | Key? key,
10 | required this.icon,
11 | required this.text,
12 | required this.ontap,
13 | }) : super(key: key);
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return ListTile(
18 | leading: icon,
19 | title: text,
20 | onTap: ontap,
21 | );
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/widget/finder_logo.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class FinderLogo extends StatelessWidget {
4 | final double width;
5 | final double height;
6 |
7 | const FinderLogo({
8 | super.key,
9 | required this.width,
10 | required this.height,
11 | });
12 |
13 | @override
14 | Widget build(BuildContext context) {
15 | return Transform.rotate(
16 | angle: 1.5,
17 | child: SizedBox(
18 | width: width,
19 | height: height,
20 | child: Image.asset(
21 | 'assets/logo.png',
22 | ),
23 | ),
24 | );
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/lib/widget/finder_platform_box.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:finder/widget/finder_text_font.dart';
3 | import 'package:font_awesome_flutter/font_awesome_flutter.dart';
4 |
5 | class FinderPlatformBox extends StatelessWidget {
6 | final Color backgroundColor;
7 | final IconData icon;
8 | final Color color;
9 | final String text;
10 | final IconData statusIcon;
11 |
12 | const FinderPlatformBox({
13 | Key? key,
14 | required this.backgroundColor,
15 | required this.icon,
16 | required this.color,
17 | required this.text,
18 | required this.statusIcon,
19 | }) : super(key: key);
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | return Container(
24 | width: 175.0,
25 | height: 50,
26 | decoration: BoxDecoration(
27 | color: backgroundColor,
28 | border: Border.all(
29 | width: 2.0,
30 | color: color,
31 | ),
32 | borderRadius: BorderRadius.circular(8.0),
33 | ),
34 | child: Stack(
35 | alignment: Alignment.centerLeft,
36 | children: [
37 | Padding(
38 | padding: const EdgeInsets.only(left: 10.0),
39 | child: Row(
40 | children: [
41 | FaIcon(
42 | icon,
43 | color: color,
44 | ),
45 | const SizedBox(width: 5.0),
46 | FinderTextFont(
47 | text: text,
48 | fontSize: 13.0,
49 | fontColor: color,
50 | weight: FontWeight.normal,
51 | )
52 | ],
53 | ),
54 | ),
55 | Row(
56 | mainAxisAlignment: MainAxisAlignment.end,
57 | children: [
58 | Padding(
59 | padding: const EdgeInsets.only(right: 10.0),
60 | child: FaIcon(
61 | statusIcon,
62 | color: color,
63 | size: 20.0,
64 | ),
65 | ),
66 | ],
67 | ),
68 | ],
69 | ),
70 | );
71 | }
72 | }
73 |
--------------------------------------------------------------------------------
/lib/widget/finder_text_font.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 |
4 | class FinderTextFont extends StatelessWidget {
5 | final String text;
6 | final double fontSize;
7 | final Color fontColor;
8 | final FontWeight weight;
9 |
10 | const FinderTextFont({
11 | Key? key,
12 | required this.text,
13 | required this.fontSize,
14 | required this.fontColor,
15 | required this.weight,
16 | }) : super(key: key);
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | return Text(
21 | text,
22 | style: GoogleFonts.aldrich(
23 | textStyle: TextStyle(
24 | fontSize: fontSize,
25 | color: fontColor,
26 | fontWeight: weight,
27 | ),
28 | ),
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/widget/finder_textfield.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:google_fonts/google_fonts.dart';
3 | import 'package:finder/colors/color.dart';
4 |
5 | class FinderTextField extends StatelessWidget {
6 | final TextEditingController controller;
7 | final VoidCallback ontap;
8 |
9 | const FinderTextField({
10 | super.key,
11 | required this.controller,
12 | required this.ontap,
13 | });
14 |
15 | @override
16 | Widget build(BuildContext context) {
17 | return SizedBox(
18 | width: 370.0,
19 | height: 60,
20 | child: TextField(
21 | controller: controller,
22 | style: GoogleFonts.aldrich(
23 | color: FinderColors.grey,
24 | fontWeight: FontWeight.normal,
25 | fontSize: 15.0,
26 | ),
27 | cursorColor: FinderColors.themePurple,
28 | textAlign: TextAlign.left,
29 | decoration: InputDecoration(
30 | enabledBorder: OutlineInputBorder(
31 | gapPadding: 0.0,
32 | borderRadius: BorderRadius.circular(8.0),
33 | borderSide: const BorderSide(
34 | width: 2.0,
35 | color: FinderColors.themePurple,
36 | ),
37 | ),
38 | focusedBorder: OutlineInputBorder(
39 | borderRadius: BorderRadius.circular(8.0),
40 | borderSide: const BorderSide(
41 | width: 2.0,
42 | color: FinderColors.themePurple,
43 | ),
44 | ),
45 | hintText: 'Enter the ID you want to find . . .',
46 | hintStyle: GoogleFonts.aldrich(
47 | color: FinderColors.grey,
48 | fontWeight: FontWeight.normal,
49 | fontSize: 13.0,
50 | ),
51 | isDense: true,
52 | prefixIcon: Padding(
53 | padding: const EdgeInsets.only(
54 | top: 10.0,
55 | left: 10.0,
56 | ),
57 | child: Text(
58 | '@ ',
59 | style: GoogleFonts.aldrich(
60 | color: FinderColors.grey,
61 | fontWeight: FontWeight.normal,
62 | fontSize: 25.0,
63 | ),
64 | ),
65 | ),
66 | suffixIcon: Container(
67 | height: 5.0,
68 | width: 5.0,
69 | decoration: BoxDecoration(
70 | borderRadius: BorderRadius.circular(6.0),
71 | color: FinderColors.themePurple,
72 | ),
73 | child: Material(
74 | color: Colors.transparent,
75 | child: InkWell(
76 | onTap: ontap,
77 | child: const Icon(
78 | Icons.search,
79 | color: Colors.white,
80 | size: 25.0,
81 | ),
82 | ),
83 | ),
84 | ),
85 | ),
86 | ),
87 | );
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | archive:
5 | dependency: transitive
6 | description:
7 | name: archive
8 | sha256: ed7cc591a948744994714375caf9a2ce89e1d82e8243997c8a2994d57181c212
9 | url: "https://pub.dev"
10 | source: hosted
11 | version: "3.3.5"
12 | args:
13 | dependency: transitive
14 | description:
15 | name: args
16 | sha256: b003c3098049a51720352d219b0bb5f219b60fbfb68e7a4748139a06a5676515
17 | url: "https://pub.dev"
18 | source: hosted
19 | version: "2.3.1"
20 | async:
21 | dependency: transitive
22 | description:
23 | name: async
24 | sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
25 | url: "https://pub.dev"
26 | source: hosted
27 | version: "2.10.0"
28 | boolean_selector:
29 | dependency: transitive
30 | description:
31 | name: boolean_selector
32 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
33 | url: "https://pub.dev"
34 | source: hosted
35 | version: "2.1.1"
36 | characters:
37 | dependency: transitive
38 | description:
39 | name: characters
40 | sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
41 | url: "https://pub.dev"
42 | source: hosted
43 | version: "1.2.1"
44 | checked_yaml:
45 | dependency: transitive
46 | description:
47 | name: checked_yaml
48 | sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659
49 | url: "https://pub.dev"
50 | source: hosted
51 | version: "2.0.1"
52 | cli_util:
53 | dependency: transitive
54 | description:
55 | name: cli_util
56 | sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c"
57 | url: "https://pub.dev"
58 | source: hosted
59 | version: "0.3.5"
60 | clock:
61 | dependency: transitive
62 | description:
63 | name: clock
64 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
65 | url: "https://pub.dev"
66 | source: hosted
67 | version: "1.1.1"
68 | collection:
69 | dependency: transitive
70 | description:
71 | name: collection
72 | sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
73 | url: "https://pub.dev"
74 | source: hosted
75 | version: "1.17.0"
76 | convert:
77 | dependency: transitive
78 | description:
79 | name: convert
80 | sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
81 | url: "https://pub.dev"
82 | source: hosted
83 | version: "3.1.1"
84 | crypto:
85 | dependency: transitive
86 | description:
87 | name: crypto
88 | sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
89 | url: "https://pub.dev"
90 | source: hosted
91 | version: "3.0.2"
92 | cupertino_icons:
93 | dependency: "direct main"
94 | description:
95 | name: cupertino_icons
96 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
97 | url: "https://pub.dev"
98 | source: hosted
99 | version: "1.0.5"
100 | fake_async:
101 | dependency: transitive
102 | description:
103 | name: fake_async
104 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
105 | url: "https://pub.dev"
106 | source: hosted
107 | version: "1.3.1"
108 | ffi:
109 | dependency: transitive
110 | description:
111 | name: ffi
112 | sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
113 | url: "https://pub.dev"
114 | source: hosted
115 | version: "2.0.1"
116 | file:
117 | dependency: transitive
118 | description:
119 | name: file
120 | sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
121 | url: "https://pub.dev"
122 | source: hosted
123 | version: "6.1.4"
124 | flutter:
125 | dependency: "direct main"
126 | description: flutter
127 | source: sdk
128 | version: "0.0.0"
129 | flutter_launcher_icons:
130 | dependency: "direct dev"
131 | description:
132 | name: flutter_launcher_icons
133 | sha256: ce0e501cfc258907842238e4ca605e74b7fd1cdf04b3b43e86c43f3e40a1592c
134 | url: "https://pub.dev"
135 | source: hosted
136 | version: "0.11.0"
137 | flutter_lints:
138 | dependency: "direct main"
139 | description:
140 | name: flutter_lints
141 | sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
142 | url: "https://pub.dev"
143 | source: hosted
144 | version: "2.0.1"
145 | flutter_test:
146 | dependency: "direct dev"
147 | description: flutter
148 | source: sdk
149 | version: "0.0.0"
150 | flutter_web_plugins:
151 | dependency: transitive
152 | description: flutter
153 | source: sdk
154 | version: "0.0.0"
155 | font_awesome_flutter:
156 | dependency: "direct main"
157 | description:
158 | name: font_awesome_flutter
159 | sha256: "875dbb9ec1ad30d68102019ceb682760d06c72747c1c5b7885781b95f88569cc"
160 | url: "https://pub.dev"
161 | source: hosted
162 | version: "10.3.0"
163 | google_fonts:
164 | dependency: "direct main"
165 | description:
166 | name: google_fonts
167 | sha256: "8f099045e2f2a30e4d4d0a35f40c6bc941a8f2ca0e10ad9d214ee9edd3f37483"
168 | url: "https://pub.dev"
169 | source: hosted
170 | version: "3.0.1"
171 | http:
172 | dependency: "direct main"
173 | description:
174 | name: http
175 | sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
176 | url: "https://pub.dev"
177 | source: hosted
178 | version: "0.13.5"
179 | http_parser:
180 | dependency: transitive
181 | description:
182 | name: http_parser
183 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
184 | url: "https://pub.dev"
185 | source: hosted
186 | version: "4.0.2"
187 | http_status_code:
188 | dependency: "direct main"
189 | description:
190 | name: http_status_code
191 | sha256: "052b42add019380f060cbf9cc9669b6831ca7e0244c925c520de8c1867dd139d"
192 | url: "https://pub.dev"
193 | source: hosted
194 | version: "0.0.2"
195 | image:
196 | dependency: transitive
197 | description:
198 | name: image
199 | sha256: f6ffe2895e3c86c6ad5a27e6302cf807403463e397cb2f0c580f619ac2fa588b
200 | url: "https://pub.dev"
201 | source: hosted
202 | version: "3.2.2"
203 | internet_connection_checker:
204 | dependency: "direct main"
205 | description:
206 | name: internet_connection_checker
207 | sha256: "1c683e63e89c9ac66a40748b1b20889fd9804980da732bf2b58d6d5456c8e876"
208 | url: "https://pub.dev"
209 | source: hosted
210 | version: "1.0.0+1"
211 | js:
212 | dependency: transitive
213 | description:
214 | name: js
215 | sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
216 | url: "https://pub.dev"
217 | source: hosted
218 | version: "0.6.5"
219 | json_annotation:
220 | dependency: transitive
221 | description:
222 | name: json_annotation
223 | sha256: "3520fa844009431b5d4491a5a778603520cdc399ab3406332dcc50f93547258c"
224 | url: "https://pub.dev"
225 | source: hosted
226 | version: "4.7.0"
227 | lints:
228 | dependency: transitive
229 | description:
230 | name: lints
231 | sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
232 | url: "https://pub.dev"
233 | source: hosted
234 | version: "2.0.1"
235 | matcher:
236 | dependency: transitive
237 | description:
238 | name: matcher
239 | sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
240 | url: "https://pub.dev"
241 | source: hosted
242 | version: "0.12.13"
243 | material_color_utilities:
244 | dependency: transitive
245 | description:
246 | name: material_color_utilities
247 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
248 | url: "https://pub.dev"
249 | source: hosted
250 | version: "0.2.0"
251 | meta:
252 | dependency: transitive
253 | description:
254 | name: meta
255 | sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
256 | url: "https://pub.dev"
257 | source: hosted
258 | version: "1.8.0"
259 | nested:
260 | dependency: transitive
261 | description:
262 | name: nested
263 | sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
264 | url: "https://pub.dev"
265 | source: hosted
266 | version: "1.0.0"
267 | path:
268 | dependency: transitive
269 | description:
270 | name: path
271 | sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
272 | url: "https://pub.dev"
273 | source: hosted
274 | version: "1.8.3"
275 | path_provider:
276 | dependency: transitive
277 | description:
278 | name: path_provider
279 | sha256: "050e8e85e4b7fecdf2bb3682c1c64c4887a183720c802d323de8a5fd76d372dd"
280 | url: "https://pub.dev"
281 | source: hosted
282 | version: "2.0.11"
283 | path_provider_android:
284 | dependency: transitive
285 | description:
286 | name: path_provider_android
287 | sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e
288 | url: "https://pub.dev"
289 | source: hosted
290 | version: "2.0.22"
291 | path_provider_ios:
292 | dependency: transitive
293 | description:
294 | name: path_provider_ios
295 | sha256: "03d639406f5343478352433f00d3c4394d52dac8df3d847869c5e2333e0bbce8"
296 | url: "https://pub.dev"
297 | source: hosted
298 | version: "2.0.11"
299 | path_provider_linux:
300 | dependency: transitive
301 | description:
302 | name: path_provider_linux
303 | sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379
304 | url: "https://pub.dev"
305 | source: hosted
306 | version: "2.1.7"
307 | path_provider_macos:
308 | dependency: transitive
309 | description:
310 | name: path_provider_macos
311 | sha256: "2a97e7fbb7ae9dcd0dfc1220a78e9ec3e71da691912e617e8715ff2a13086ae8"
312 | url: "https://pub.dev"
313 | source: hosted
314 | version: "2.0.6"
315 | path_provider_platform_interface:
316 | dependency: transitive
317 | description:
318 | name: path_provider_platform_interface
319 | sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76
320 | url: "https://pub.dev"
321 | source: hosted
322 | version: "2.0.5"
323 | path_provider_windows:
324 | dependency: transitive
325 | description:
326 | name: path_provider_windows
327 | sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c
328 | url: "https://pub.dev"
329 | source: hosted
330 | version: "2.1.3"
331 | petitparser:
332 | dependency: transitive
333 | description:
334 | name: petitparser
335 | sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
336 | url: "https://pub.dev"
337 | source: hosted
338 | version: "5.1.0"
339 | platform:
340 | dependency: transitive
341 | description:
342 | name: platform
343 | sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
344 | url: "https://pub.dev"
345 | source: hosted
346 | version: "3.1.0"
347 | plugin_platform_interface:
348 | dependency: transitive
349 | description:
350 | name: plugin_platform_interface
351 | sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a
352 | url: "https://pub.dev"
353 | source: hosted
354 | version: "2.1.3"
355 | pointycastle:
356 | dependency: transitive
357 | description:
358 | name: pointycastle
359 | sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346
360 | url: "https://pub.dev"
361 | source: hosted
362 | version: "3.6.2"
363 | process:
364 | dependency: transitive
365 | description:
366 | name: process
367 | sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
368 | url: "https://pub.dev"
369 | source: hosted
370 | version: "4.2.4"
371 | provider:
372 | dependency: "direct main"
373 | description:
374 | name: provider
375 | sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
376 | url: "https://pub.dev"
377 | source: hosted
378 | version: "6.0.5"
379 | sky_engine:
380 | dependency: transitive
381 | description: flutter
382 | source: sdk
383 | version: "0.0.99"
384 | source_span:
385 | dependency: transitive
386 | description:
387 | name: source_span
388 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
389 | url: "https://pub.dev"
390 | source: hosted
391 | version: "1.9.1"
392 | stack_trace:
393 | dependency: transitive
394 | description:
395 | name: stack_trace
396 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
397 | url: "https://pub.dev"
398 | source: hosted
399 | version: "1.11.0"
400 | stream_channel:
401 | dependency: transitive
402 | description:
403 | name: stream_channel
404 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
405 | url: "https://pub.dev"
406 | source: hosted
407 | version: "2.1.1"
408 | string_scanner:
409 | dependency: transitive
410 | description:
411 | name: string_scanner
412 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
413 | url: "https://pub.dev"
414 | source: hosted
415 | version: "1.2.0"
416 | term_glyph:
417 | dependency: transitive
418 | description:
419 | name: term_glyph
420 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
421 | url: "https://pub.dev"
422 | source: hosted
423 | version: "1.2.1"
424 | test_api:
425 | dependency: transitive
426 | description:
427 | name: test_api
428 | sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
429 | url: "https://pub.dev"
430 | source: hosted
431 | version: "0.4.16"
432 | typed_data:
433 | dependency: transitive
434 | description:
435 | name: typed_data
436 | sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
437 | url: "https://pub.dev"
438 | source: hosted
439 | version: "1.3.1"
440 | url_launcher:
441 | dependency: "direct main"
442 | description:
443 | name: url_launcher
444 | sha256: "3c92b0efb5e9dcb8f846aefabf9f0f739f91682ed486b991ceda51c288e60896"
445 | url: "https://pub.dev"
446 | source: hosted
447 | version: "6.1.7"
448 | url_launcher_android:
449 | dependency: transitive
450 | description:
451 | name: url_launcher_android
452 | sha256: "6f91d30ce9060c204b2dbe728adb300750fa4b228e8f7ed1b961aa1ceb728799"
453 | url: "https://pub.dev"
454 | source: hosted
455 | version: "6.0.22"
456 | url_launcher_ios:
457 | dependency: transitive
458 | description:
459 | name: url_launcher_ios
460 | sha256: "6ba7dddee26c9fae27c9203c424631109d73c8fa26cfa7bc3e35e751cb87f62e"
461 | url: "https://pub.dev"
462 | source: hosted
463 | version: "6.0.17"
464 | url_launcher_linux:
465 | dependency: transitive
466 | description:
467 | name: url_launcher_linux
468 | sha256: "360fa359ab06bcb4f7c5cd3123a2a9a4d3364d4575d27c4b33468bd4497dd094"
469 | url: "https://pub.dev"
470 | source: hosted
471 | version: "3.0.1"
472 | url_launcher_macos:
473 | dependency: transitive
474 | description:
475 | name: url_launcher_macos
476 | sha256: a9b3ea9043eabfaadfa3fb89de67a11210d85569086d22b3854484beab8b3978
477 | url: "https://pub.dev"
478 | source: hosted
479 | version: "3.0.1"
480 | url_launcher_platform_interface:
481 | dependency: transitive
482 | description:
483 | name: url_launcher_platform_interface
484 | sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6"
485 | url: "https://pub.dev"
486 | source: hosted
487 | version: "2.1.1"
488 | url_launcher_web:
489 | dependency: transitive
490 | description:
491 | name: url_launcher_web
492 | sha256: "5669882643b96bb6d5786637cac727c6e918a790053b09245fd4513b8a07df2a"
493 | url: "https://pub.dev"
494 | source: hosted
495 | version: "2.0.13"
496 | url_launcher_windows:
497 | dependency: transitive
498 | description:
499 | name: url_launcher_windows
500 | sha256: e3c3b16d3104260c10eea3b0e34272aaa57921f83148b0619f74c2eced9b7ef1
501 | url: "https://pub.dev"
502 | source: hosted
503 | version: "3.0.1"
504 | vector_math:
505 | dependency: transitive
506 | description:
507 | name: vector_math
508 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
509 | url: "https://pub.dev"
510 | source: hosted
511 | version: "2.1.4"
512 | win32:
513 | dependency: transitive
514 | description:
515 | name: win32
516 | sha256: ca121dbbadb3e43b449053feab0cdf3f2bff93b107cacf0290e3d29f717374b6
517 | url: "https://pub.dev"
518 | source: hosted
519 | version: "3.1.2"
520 | xdg_directories:
521 | dependency: transitive
522 | description:
523 | name: xdg_directories
524 | sha256: "11541eedefbcaec9de35aa82650b695297ce668662bbd6e3911a7fabdbde589f"
525 | url: "https://pub.dev"
526 | source: hosted
527 | version: "0.2.0+2"
528 | xml:
529 | dependency: transitive
530 | description:
531 | name: xml
532 | sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
533 | url: "https://pub.dev"
534 | source: hosted
535 | version: "6.2.2"
536 | yaml:
537 | dependency: transitive
538 | description:
539 | name: yaml
540 | sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
541 | url: "https://pub.dev"
542 | source: hosted
543 | version: "3.1.1"
544 | sdks:
545 | dart: ">=3.0.0-19.0.dev <4.0.0"
546 | flutter: ">=3.0.0"
547 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: finder
2 | description: A new Flutter project.
3 | # The following line prevents the package from being accidentally published to
4 | # pub.dev using `flutter pub publish`. This is preferred for private packages.
5 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
6 |
7 | # The following defines the version and build number for your application.
8 | # A version number is three numbers separated by dots, like 1.2.43
9 | # followed by an optional build number separated by a +.
10 | # Both the version and the builder number may be overridden in flutter
11 | # build by specifying --build-name and --build-number, respectively.
12 | # In Android, build-name is used as versionName while build-number used as versionCode.
13 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
14 | # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion.
15 | # Read more about iOS versioning at
16 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
17 | # In Windows, build-name is used as the major, minor, and patch parts
18 | # of the product and file versions while build-number is used as the build suffix.
19 | version: 1.0.0+1
20 |
21 | environment:
22 | sdk: '>=3.0.0-19.0.dev <4.0.0'
23 |
24 | # Dependencies specify other packages that your package needs in order to work.
25 | # To automatically upgrade your package dependencies to the latest versions
26 | # consider running `flutter pub upgrade --major-versions`. Alternatively,
27 | # dependencies can be manually updated by changing the version numbers below to
28 | # the latest version available on pub.dev. To see which dependencies have newer
29 | # versions available, run `flutter pub outdated`.
30 | dependencies:
31 | flutter:
32 | sdk: flutter
33 |
34 |
35 | # The following adds the Cupertino Icons font to your application.
36 | # Use with the CupertinoIcons class for iOS style icons.
37 | cupertino_icons: ^1.0.2
38 | http: ^0.13.5
39 | http_status_code: ^0.0.2
40 | google_fonts: ^3.0.1
41 | font_awesome_flutter: ^10.3.0
42 | url_launcher: ^6.1.7
43 | flutter_lints: ^2.0.1
44 | internet_connection_checker: ^1.0.0+1
45 | provider: ^6.0.4
46 |
47 | dev_dependencies:
48 | flutter_test:
49 | sdk: flutter
50 |
51 | flutter_launcher_icons: ^0.11.0
52 |
53 | flutter_icons:
54 | android: true
55 | image_path: "assets/logo.png"
56 |
57 | # The "flutter_lints" package below contains a set of recommended lints to
58 | # encourage good coding practices. The lint set provided by the package is
59 | # activated in the `analysis_options.yaml` file located at the root of your
60 | # package. See that file for information about deactivating specific lint
61 | # rules and activating additional ones.
62 | flutter_lints: ^2.0.0
63 |
64 | # For information on the generic Dart part of this file, see the
65 | # following page: https://dart.dev/tools/pub/pubspec
66 |
67 | # The following section is specific to Flutter packages.
68 | flutter:
69 |
70 | # The following line ensures that the Material Icons font is
71 | # included with your application, so that you can use the icons in
72 | # the material Icons class.
73 | uses-material-design: true
74 |
75 | # To add assets to your application, add an assets section, like this:
76 | assets:
77 | - assets/
78 |
79 | # An image asset can refer to one or more resolution-specific "variants", see
80 | # https://flutter.dev/assets-and-images/#resolution-aware
81 |
82 | # For details regarding adding assets from package dependencies, see
83 | # https://flutter.dev/assets-and-images/#from-packages
84 |
85 | # To add custom fonts to your application, add a fonts section here,
86 | # in this "flutter" section. Each entry in this list should have a
87 | # "family" key with the font family name, and a "fonts" key with a
88 | # list giving the asset and other descriptors for the font. For
89 | # example:
90 | # fonts:
91 | # - family: Schyler
92 | # fonts:
93 | # - asset: fonts/Schyler-Regular.ttf
94 | # - asset: fonts/Schyler-Italic.ttf
95 | # style: italic
96 | # - family: Trajan Pro
97 | # fonts:
98 | # - asset: fonts/TrajanPro.ttf
99 | # - asset: fonts/TrajanPro_Bold.ttf
100 | # weight: 700
101 | #
102 | # For details regarding fonts from package dependencies,
103 | # see https://flutter.dev/custom-fonts/#from-packages
104 |
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | //
3 | // To perform an interaction with a widget in your test, use the WidgetTester
4 | // utility in the flutter_test package. For example, you can send tap and scroll
5 | // gestures. You can also use WidgetTester to find child widgets in the widget
6 | // tree, read text, and verify that the values of widget properties are correct.
7 |
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_test/flutter_test.dart';
10 |
11 | import 'package:finder/main.dart';
12 |
13 | void main() {
14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
15 | // Build our app and trigger a frame.
16 | await tester.pumpWidget(const MyApp());
17 |
18 | // Verify that our counter starts at 0.
19 | expect(find.text('0'), findsOneWidget);
20 | expect(find.text('1'), findsNothing);
21 |
22 | // Tap the '+' icon and trigger a frame.
23 | await tester.tap(find.byIcon(Icons.add));
24 | await tester.pump();
25 |
26 | // Verify that our counter has incremented.
27 | expect(find.text('0'), findsNothing);
28 | expect(find.text('1'), findsOneWidget);
29 | });
30 | }
31 |
--------------------------------------------------------------------------------