├── lib
├── http
│ ├── HttpError.dart
│ └── HttpManager.dart
├── provider
│ └── Counter.dart
├── pages
│ ├── Me.dart
│ ├── Fishond.dart
│ ├── Idle.dart
│ ├── Messages.dart
│ ├── Login.dart
│ └── Home.dart
├── config
│ └── config.dart
├── utils
│ ├── HexColor.dart
│ └── UISize.dart
├── maps
│ └── ImgList.dart
├── components
│ ├── Mask.dart
│ ├── HeaderNav.dart
│ ├── ImagePlaceholder.dart
│ ├── BottomNav.dart
│ ├── BlockNav2.dart
│ ├── BlockNav1.dart
│ └── FallsList.dart
├── main.dart
└── mock
│ └── ImgListMock.dart
├── ios
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-83.5x83.5@2x.png
│ │ │ └── Contents.json
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── Main.storyboard
│ │ └── LaunchScreen.storyboard
│ └── Info.plist
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcodeproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── WorkspaceSettings.xcsettings
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ └── Runner.xcscheme
│ └── project.pbxproj
└── .gitignore
├── renovate.json
├── .github
└── FUNDING.yml
├── assets
└── images
│ ├── hi.png
│ ├── book.png
│ ├── boot.png
│ ├── fruit.png
│ ├── more.png
│ ├── phone.png
│ ├── taobao.png
│ ├── zhima.png
│ ├── package.png
│ ├── qiandao.png
│ ├── zhifubao.png
│ ├── Screenshot_1608024527.png
│ └── Screenshot_1608024533.png
├── android
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ ├── ic_launcher.png
│ │ │ │ │ └── launch_image.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── xml
│ │ │ │ │ └── network_security_config.xml
│ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ └── values
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── example
│ │ │ │ │ └── fishflutter
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── settings.gradle
└── build.gradle
├── CONTRIBUTORS.md
├── .metadata
├── .vscode
└── launch.json
├── .gitignore
├── README.md
├── LICENSE
├── test
└── widget_test.dart
├── pubspec.yaml
└── pubspec.lock
/lib/http/HttpError.dart:
--------------------------------------------------------------------------------
1 | class HttpError {}
2 |
--------------------------------------------------------------------------------
/lib/http/HttpManager.dart:
--------------------------------------------------------------------------------
1 | class HttpManager {}
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [BB-Code]
4 |
--------------------------------------------------------------------------------
/assets/images/hi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/hi.png
--------------------------------------------------------------------------------
/assets/images/book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/book.png
--------------------------------------------------------------------------------
/assets/images/boot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/boot.png
--------------------------------------------------------------------------------
/assets/images/fruit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/fruit.png
--------------------------------------------------------------------------------
/assets/images/more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/more.png
--------------------------------------------------------------------------------
/assets/images/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/phone.png
--------------------------------------------------------------------------------
/assets/images/taobao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/taobao.png
--------------------------------------------------------------------------------
/assets/images/zhima.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/zhima.png
--------------------------------------------------------------------------------
/assets/images/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/package.png
--------------------------------------------------------------------------------
/assets/images/qiandao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/qiandao.png
--------------------------------------------------------------------------------
/assets/images/zhifubao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/zhifubao.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_1608024527.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/Screenshot_1608024527.png
--------------------------------------------------------------------------------
/assets/images/Screenshot_1608024533.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/assets/images/Screenshot_1608024533.png
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | android.enableR8=true
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/launch_image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-xhdpi/launch_image.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BB-Code/fishflutter/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/fishflutter/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.fishflutter
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/provider/Counter.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Counter with ChangeNotifier {
4 | int _count = 0;
5 | int get count => _count;
6 | void increment() {
7 | _count++;
8 | notifyListeners();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip
7 |
--------------------------------------------------------------------------------
/CONTRIBUTORS.md:
--------------------------------------------------------------------------------
1 |
2 | ## Contributors
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/pages/Me.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Me extends StatefulWidget {
4 | @override
5 | MeState createState() => MeState();
6 | }
7 |
8 | class MeState extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Center(
12 | child: Text("我的"),
13 | );
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/.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 and should not be manually edited.
5 |
6 | version:
7 | revision: 8874f21e79d7ec66d0457c7ab338348e31b17f1d
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/lib/config/config.dart:
--------------------------------------------------------------------------------
1 | class Config {
2 | static String imagePrefix = "assets/images/";
3 | static String freeMp4 = "https://www.runoob.com/try/demo_source/movie.mp4";
4 | static String freeMp42 = "http://vjs.zencdn.net/v/oceans.mp4";
5 | static String freeM3u8 =
6 | "https://stream72.shidur.net/htvlive2/_definst_/smil:live2.smil/chunklist_b1248000.m3u8";
7 | }
8 |
--------------------------------------------------------------------------------
/lib/pages/Fishond.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Fishond extends StatefulWidget {
4 | @override
5 | FishondState createState() => FishondState();
6 | }
7 |
8 | class FishondState extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Center(
12 | child: Text("鱼塘"),
13 | );
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/pages/Idle.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class Idle extends StatefulWidget {
4 | @override
5 | IdleState createState() => IdleState();
6 | }
7 |
8 | class IdleState extends State {
9 | @override
10 | Widget build(BuildContext context) {
11 | return Scaffold(
12 | body: Center(
13 | child: Text("闲置"),
14 | ));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/lib/utils/HexColor.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class HexColor extends Color {
4 | static int toHexColor(String hexColor) {
5 | hexColor = hexColor.toLowerCase().replaceAll("#", "");
6 | if (hexColor.length == 6) {
7 | hexColor = "FF" + hexColor;
8 | }
9 | return int.parse(hexColor, radix: 16);
10 | }
11 |
12 | HexColor(final String hexColor) : super(toHexColor(hexColor));
13 | }
14 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "fishflutter",
9 | "request": "launch",
10 | "type": "dart",
11 | "program": "lib/main.dart"
12 | }
13 | ]
14 | }
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | -
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | *.mode1v3
2 | *.mode2v3
3 | *.moved-aside
4 | *.pbxuser
5 | *.perspectivev3
6 | **/*sync/
7 | .sconsign.dblite
8 | .tags*
9 | **/.vagrant/
10 | **/DerivedData/
11 | Icon?
12 | **/Pods/
13 | **/.symlinks/
14 | profile
15 | xcuserdata
16 | **/.generated/
17 | Flutter/App.framework
18 | Flutter/Flutter.framework
19 | Flutter/Flutter.podspec
20 | Flutter/Generated.xcconfig
21 | Flutter/app.flx
22 | Flutter/app.zip
23 | Flutter/flutter_assets/
24 | Flutter/flutter_export_environment.sh
25 | ServiceDefinitions.json
26 | Runner/GeneratedPluginRegistrant.*
27 |
28 | # Exceptions to above rules.
29 | !default.mode1v3
30 | !default.mode2v3
31 | !default.pbxuser
32 | !default.perspectivev3
33 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.8.10'
3 | repositories {
4 | google()
5 | jcenter()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:7.4.2'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | jcenter()
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 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 |
12 | # IntelliJ related
13 | *.iml
14 | *.ipr
15 | *.iws
16 | .idea/
17 | # The .vscode folder contains launch configuration and tasks you configure in
18 | # VS Code which you may wish to be included in version control, so this line
19 | # is commented out by default.
20 | #.vscode/
21 |
22 | # Flutter/Dart/Pub related
23 | **/doc/api/
24 | **/ios/Flutter/.last_build_id
25 | .dart_tool/
26 | .flutter-plugins
27 | .flutter-plugins-dependencies
28 | .packages
29 | .pub-cache/
30 | .pub/
31 | /build/
32 |
33 | # Web related
34 | lib/generated_plugin_registrant.dart
35 |
36 | # Symbolication related
37 | app.*.symbols
38 |
39 | # Obfuscation related
40 | app.*.map.json
41 |
--------------------------------------------------------------------------------
/lib/pages/Messages.dart:
--------------------------------------------------------------------------------
1 | // import 'package:awsome_video_player/awsome_video_player.dart';
2 | // import 'package:fishflutter/config/config.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class Messages extends StatefulWidget {
6 | @override
7 | MessagesState createState() => MessagesState();
8 | }
9 |
10 | class MessagesState extends State {
11 | @override
12 | Widget build(BuildContext context) {
13 | return Center(
14 | child: Text("消息"),
15 | // child: AwsomeVideoPlayer(
16 | // Config.freeM3u8,
17 | // playOptions: VideoPlayOptions(
18 | // seekSeconds: 30,
19 | // aspectRatio: 16 / 9,
20 | // loop: true,
21 | // autoplay: true,
22 | // allowScrubbing: true,
23 | // startPosition: Duration(seconds: 0)),
24 | // ),
25 | );
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 9.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/lib/maps/ImgList.dart:
--------------------------------------------------------------------------------
1 | class ImgList {
2 | String title;
3 | String src;
4 | int prices;
5 | int like;
6 | String author;
7 | String name;
8 | bool zhima;
9 |
10 | ImgList(
11 | {this.title, this.src, this.prices, this.like, this.author, this.zhima});
12 |
13 | ImgList.fromJson(Map json) {
14 | title = json['title'];
15 | src = json['src'];
16 | prices = json['prices'];
17 | like = json['like'];
18 | author = json['author'];
19 | name = json['name'];
20 | zhima = json['zhima'];
21 | }
22 |
23 | Map toJson() {
24 | final Map data = new Map();
25 | data['title'] = this.title;
26 | data['src'] = this.src;
27 | data['prices'] = this.prices;
28 | data['like'] = this.like;
29 | data['author'] = this.author;
30 | data['name'] = this.name;
31 | data['zhima'] = this.zhima;
32 | return data;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # fishflutter
2 |
3 | > :fish: flutter 高仿咸鱼 欢迎 :star:
4 |
5 | ## Star History
6 |
7 | [](https://star-history.com/#BB-Code/fishflutter&Date)
8 |
9 |
10 | - [x] 搭建架构
11 | ```
12 | ─ components 组件
13 | ─ config 配置
14 | ─ http 网络请求
15 | ─ maps 数据映射
16 | ─ models 数据模型
17 | ─ pages 页面
18 | ─ provider 状态共享
19 | ─ utils 工具类
20 | ```
21 |
22 | - [x] 启功页面
23 | - [x] 底部导航
24 | - [x] 登录页面
25 | - [x] 首页头部
26 | - [x] 实现下拉瀑布流
27 |
28 |
29 | > 标注
30 |
31 | - 图片是随机生成的
32 | - 目前用的是Mock数据,后面整体布局完成后改为服务数据
33 |
34 | > 预览
35 |
36 |
37 |
38 |
39 |
40 |
41 | > 本APP的素材都用于学习研究,版权归咸鱼所有,侵权删除
42 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/lib/utils/UISize.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class UISize {
4 | static MediaQueryData mediaQueryData;
5 | static double screenWidth;
6 | static double screenHeight;
7 | static double blockSizeHorizontal;
8 | static double blockSizeVertical;
9 |
10 | static double safeAreaHorizontal;
11 | static double safeAreaVertical;
12 | static double safeBlockHorizontal;
13 | static double safeBlockVertical;
14 |
15 | void init(BuildContext context) {
16 | mediaQueryData = MediaQuery.of(context);
17 | screenWidth = mediaQueryData.size.width;
18 | screenHeight = mediaQueryData.size.height;
19 | blockSizeHorizontal = screenWidth / 100.0;
20 | blockSizeVertical = screenHeight / 100.0;
21 |
22 | safeAreaHorizontal =
23 | mediaQueryData.padding.left + mediaQueryData.padding.right;
24 | safeAreaVertical =
25 | mediaQueryData.padding.top + mediaQueryData.padding.bottom;
26 | safeBlockHorizontal = (screenWidth - safeAreaHorizontal) / 100.0;
27 | safeBlockVertical = (screenHeight - safeAreaVertical) / 100.0;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 BoBo
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/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 that Flutter provides. 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:fishflutter/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(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 |
--------------------------------------------------------------------------------
/lib/components/Mask.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/utils/UISize.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class Mask extends StatelessWidget {
5 | const Mask({Key key}) : super(key: key);
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | UISize().init(context);
10 | return Container(
11 | width: UISize.screenWidth,
12 | color: Color.fromARGB(80, 72, 72, 72),
13 | child: Row(
14 | mainAxisSize: MainAxisSize.max,
15 | mainAxisAlignment: MainAxisAlignment.spaceEvenly,
16 | crossAxisAlignment: CrossAxisAlignment.center,
17 | children: [
18 | Icon(Icons.person, color: Colors.white),
19 | Padding(
20 | padding: EdgeInsets.only(right: 140),
21 | child: SizedBox(
22 | width: 100,
23 | child: Text(
24 | "欢迎来到咸鱼~ 登录打开新世界",
25 | style: TextStyle(color: Colors.white),
26 | ),
27 | )),
28 | FlatButton(
29 | color: Colors.redAccent[200],
30 | onPressed: () {},
31 | child: Text("马上登录", style: TextStyle(color: Colors.white)),
32 | )
33 | ],
34 | ));
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/components/BottomNav.dart';
2 | import 'package:fishflutter/pages/Fishond.dart';
3 | import 'package:fishflutter/pages/Home.dart';
4 | import 'package:fishflutter/pages/Idle.dart';
5 | import 'package:fishflutter/pages/Login.dart';
6 | import 'package:fishflutter/pages/Me.dart';
7 | import 'package:fishflutter/pages/Messages.dart';
8 | import 'package:fishflutter/provider/Counter.dart';
9 | import 'package:flutter/material.dart';
10 | import 'package:provider/provider.dart';
11 |
12 | void main() {
13 | runApp(MyApp());
14 | }
15 |
16 | class MyApp extends StatelessWidget {
17 | // This widget is the root of your application.
18 | @override
19 | Widget build(BuildContext context) {
20 | return MultiProvider(
21 | providers: [ChangeNotifierProvider(create: (_) => Counter())],
22 | child: MaterialApp(
23 | routes: {
24 | '/Home': (BuildContext context) => Home(),
25 | '/Fishond': (BuildContext context) => Fishond(),
26 | '/Idle': (BuildContext context) => Idle(),
27 | '/Message': (BuildContext context) => Messages(),
28 | '/Me': (BuildContext context) => Me(),
29 | "/Login": (BuildContext context) => Login()
30 | },
31 | title: '高仿咸鱼',
32 | theme: ThemeData(
33 | primarySwatch: Colors.yellow,
34 | highlightColor: Color.fromRGBO(0, 0, 0, 0),
35 | splashColor: Color.fromRGBO(0, 0, 0, 0),
36 | visualDensity: VisualDensity.adaptivePlatformDensity,
37 | ),
38 | home: BottomNav(),
39 | debugShowCheckedModeBanner: false,
40 | ));
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | fishflutter
15 | CFBundlePackageType
16 | APPL
17 | CFBundleShortVersionString
18 | $(FLUTTER_BUILD_NAME)
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSRequiresIPhoneOS
24 |
25 | UILaunchStoryboardName
26 | LaunchScreen
27 | UIMainStoryboardFile
28 | Main
29 | UISupportedInterfaceOrientations
30 |
31 | UIInterfaceOrientationPortrait
32 | UIInterfaceOrientationLandscapeLeft
33 | UIInterfaceOrientationLandscapeRight
34 |
35 | UISupportedInterfaceOrientations~ipad
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationPortraitUpsideDown
39 | UIInterfaceOrientationLandscapeLeft
40 | UIInterfaceOrientationLandscapeRight
41 |
42 | UIViewControllerBasedStatusBarAppearance
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/lib/components/HeaderNav.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/config/config.dart';
2 | import 'package:fishflutter/utils/HexColor.dart';
3 | import 'package:fishflutter/utils/uisize.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class HeaderNav extends StatelessWidget {
7 | const HeaderNav({Key key}) : super(key: key);
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | UISize().init(context);
12 | return Container(
13 | margin: EdgeInsets.only(left: 20, right: 20, bottom: 10),
14 | child: Row(
15 | mainAxisAlignment: MainAxisAlignment.spaceAround,
16 | children: [
17 | Column(children: [
18 | Image.asset(Config.imagePrefix + "phone.png", width: 40),
19 | Text(
20 | "二手手机",
21 | style: TextStyle(color: HexColor("979797"), fontSize: 14),
22 | )
23 | ]),
24 | Column(children: [
25 | Image.asset(Config.imagePrefix + "fruit.png", width: 40),
26 | Text(
27 | "生鲜水果",
28 | style: TextStyle(color: HexColor("979797"), fontSize: 14),
29 | )
30 | ]),
31 | Column(children: [
32 | Image.asset(Config.imagePrefix + "package.png", width: 40),
33 | Text(
34 | "奢品珠宝",
35 | style: TextStyle(color: HexColor("979797"), fontSize: 14),
36 | )
37 | ]),
38 | Column(children: [
39 | Image.asset(Config.imagePrefix + "book.png", width: 40),
40 | Text(
41 | "二手图书",
42 | style: TextStyle(color: HexColor("979797"), fontSize: 14),
43 | )
44 | ]),
45 | Column(children: [
46 | Image.asset(Config.imagePrefix + "more.png", width: 40),
47 | Text(
48 | "分类",
49 | style: TextStyle(color: HexColor("979797"), fontSize: 14),
50 | )
51 | ])
52 | ],
53 | ),
54 | );
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/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 29
30 |
31 | sourceSets {
32 | main.java.srcDirs += 'src/main/kotlin'
33 | }
34 |
35 | lintOptions {
36 | disable 'InvalidPackage'
37 | }
38 |
39 | defaultConfig {
40 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
41 | applicationId "com.example.fishflutter"
42 | minSdkVersion 16
43 | targetSdkVersion 29
44 | versionCode flutterVersionCode.toInteger()
45 | versionName flutterVersionName
46 | }
47 |
48 | buildTypes {
49 | release {
50 | // TODO: Add your own signing config for the release build.
51 | // Signing with the debug keys for now, so `flutter run --release` works.
52 | signingConfig signingConfigs.debug
53 | }
54 | }
55 | }
56 |
57 | flutter {
58 | source '../..'
59 | }
60 |
61 | dependencies {
62 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
63 | }
64 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/lib/components/ImagePlaceholder.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/utils/HexColor.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | class ImagePlaceholder extends StatelessWidget {
5 | final String radiusDirection;
6 | final String bgColor;
7 | final String labelTitle;
8 | const ImagePlaceholder(
9 | {Key key, this.radiusDirection, this.bgColor, this.labelTitle})
10 | : super(key: key);
11 | @override
12 | Widget build(BuildContext context) {
13 | return radiusDirection == "L"
14 | ? Container(
15 | width: 80.0,
16 | height: 80.0,
17 | decoration: BoxDecoration(
18 | borderRadius: BorderRadius.only(
19 | topLeft: Radius.circular(10),
20 | bottomLeft: Radius.circular(10)),
21 | image: DecorationImage(
22 | image: NetworkImage("https://unsplash.it/100/100/?random"),
23 | ),
24 | ),
25 | )
26 | : radiusDirection == "R"
27 | ? Container(
28 | width: 80.0,
29 | height: 80.0,
30 | decoration: BoxDecoration(
31 | borderRadius: BorderRadius.only(
32 | topRight: Radius.circular(10),
33 | bottomRight: Radius.circular(10)),
34 | image: DecorationImage(
35 | image: NetworkImage("https://unsplash.it/100/100/?random"),
36 | ),
37 | ),
38 | )
39 | : Container(
40 | width: 76.0,
41 | height: 76.0,
42 | decoration: BoxDecoration(
43 | borderRadius: BorderRadius.circular(10),
44 | image: DecorationImage(
45 | image: NetworkImage("https://unsplash.it/80/80/?random"),
46 | ),
47 | ),
48 | child: Stack(fit: StackFit.loose, children: [
49 | Positioned(
50 | top: 50,
51 | left: 4,
52 | child: Container(
53 | alignment: Alignment.center,
54 | height: 20.0,
55 | width: 66,
56 | decoration: BoxDecoration(
57 | borderRadius: BorderRadius.circular(10),
58 | color: HexColor(bgColor),
59 | ),
60 | child: Text(
61 | labelTitle,
62 | style: TextStyle(color: Colors.white, fontSize: 11),
63 | )),
64 | )
65 | ]));
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
8 |
13 |
20 |
24 |
28 |
33 |
37 |
38 |
39 |
40 |
41 |
42 |
44 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/lib/mock/ImgListMock.dart:
--------------------------------------------------------------------------------
1 | List imgListMock = [
2 | {
3 | "title": "LV 老花水桶 今年7月官网购",
4 | "src": "https://unsplash.it/300/250/?random",
5 | "prices": 1000,
6 | "like": 44,
7 | "author": "https://unsplash.it/10/10/?random",
8 | "name": "bobo",
9 | "zhima": false
10 | },
11 | {
12 | "title": "全新的水貂顶帽子冲动",
13 | "src": "https://unsplash.it/300/150/?random",
14 | "prices": 85,
15 | "like": 20,
16 | "author": "https://unsplash.it/10/10/?random",
17 | "name": "lili",
18 | "zhima": true
19 | },
20 | {
21 | "title": "今天的衣服值得你拥有",
22 | "src": "https://unsplash.it/300/300/?random",
23 | "prices": 15,
24 | "like": 3,
25 | "author": "https://unsplash.it/10/10/?random",
26 | "name": "cece",
27 | "zhima": false
28 | },
29 | {
30 | "title": "LV 老花水桶 今年7月官网购",
31 | "src": "https://unsplash.it/300/260/?random",
32 | "prices": 10000,
33 | "like": 44,
34 | "author": "https://unsplash.it/10/10/?random",
35 | "name": "rere",
36 | "zhima": true
37 | },
38 | {
39 | "title": "全新的水貂顶帽子冲动",
40 | "src": "https://unsplash.it/300/390/?random",
41 | "prices": 85,
42 | "like": 20,
43 | "author": "https://unsplash.it/10/10/?random",
44 | "name": "tt",
45 | "zhima": false
46 | },
47 | {
48 | "title": "今天的衣服值得你拥有",
49 | "src": "https://unsplash.it/300/160/?random",
50 | "prices": 15,
51 | "like": 3,
52 | "author": "https://unsplash.it/10/10/?random",
53 | "name": "rr",
54 | "zhima": true
55 | },
56 | {
57 | "title": "LV 老花水桶 今年7月官网购",
58 | "src": "https://unsplash.it/300/180/?random",
59 | "prices": 10000,
60 | "like": 44,
61 | "author": "https://unsplash.it/10/10/?random",
62 | "name": "bobocode",
63 | "zhima": true
64 | },
65 | {
66 | "title": "全新的水貂顶帽子冲动",
67 | "src": "https://unsplash.it/300/170/?random",
68 | "prices": 85,
69 | "like": 20,
70 | "author": "https://unsplash.it/10/10/?random",
71 | "name": "lili",
72 | "zhima": false
73 | },
74 | {
75 | "title": "今天的衣服值得你拥有",
76 | "src": "https://unsplash.it/300/168/?random",
77 | "prices": 15,
78 | "like": 3,
79 | "author": "https://unsplash.it/10/10/?random",
80 | "name": "cece",
81 | "zhima": true
82 | },
83 | {
84 | "title": "LV 老花水桶 今年7月官网购",
85 | "src": "https://unsplash.it/300/530/?random",
86 | "prices": 10000,
87 | "like": 44,
88 | "author": "https://unsplash.it/10/10/?random",
89 | "name": "rere",
90 | "zhima": false
91 | },
92 | {
93 | "title": "全新的水貂顶帽子冲动",
94 | "src": "https://unsplash.it/300/148/?random",
95 | "prices": 85,
96 | "like": 20,
97 | "author": "https://unsplash.it/10/10/?random",
98 | "name": "tt",
99 | "zhima": true
100 | },
101 | {
102 | "title": "今天的衣服值得你拥有",
103 | "src": "https://unsplash.it/300/175/?random",
104 | "prices": 15,
105 | "like": 3,
106 | "author": "https://unsplash.it/10/10/?random",
107 | "name": "rr",
108 | "zhima": true
109 | }
110 | ];
111 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/lib/components/BottomNav.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/pages/Fishond.dart';
2 | import 'package:fishflutter/pages/Home.dart';
3 | import 'package:fishflutter/pages/Idle.dart';
4 | import 'package:fishflutter/pages/Me.dart';
5 | import 'package:fishflutter/pages/Messages.dart';
6 | import 'package:flutter/material.dart';
7 |
8 | class BottomNav extends StatefulWidget {
9 | @override
10 | BottomNavState createState() => BottomNavState();
11 | }
12 |
13 | class BottomNavState extends State {
14 | int _currentIndex = 0;
15 | PageController _pageController = PageController();
16 | final List _pages = [
17 | Home(),
18 | Fishond(),
19 | Idle(),
20 | Messages(),
21 | Me()
22 | ];
23 | @override
24 | void initState() {
25 | super.initState();
26 | }
27 |
28 | @override
29 | Widget build(BuildContext context) {
30 | final navColor = Colors.black;
31 | final navSelectedColor = Colors.yellow;
32 | return Scaffold(
33 | body: PageView.builder(
34 | physics: AlwaysScrollableScrollPhysics(),
35 | controller: _pageController,
36 | itemCount: _pages.length,
37 | itemBuilder: (BuildContext context, int index) {
38 | return _pages[index];
39 | },
40 | ),
41 | floatingActionButtonAnimator: FloatingActionButtonAnimator.scaling,
42 | floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
43 | floatingActionButton: FloatingActionButton(
44 | child: Icon(Icons.add, size: 26),
45 | onPressed: () {
46 | Navigator.pushNamed(context, "/Login");
47 | },
48 | ),
49 | bottomNavigationBar: BottomNavigationBar(
50 | unselectedFontSize: 10,
51 | selectedFontSize: 10,
52 | type: BottomNavigationBarType.fixed,
53 | currentIndex: _currentIndex,
54 | items: [
55 | BottomNavigationBarItem(
56 | activeIcon: Icon(Icons.home, size: 26, color: navSelectedColor),
57 | icon: Icon(Icons.home_outlined, size: 26, color: navColor),
58 | title: Text('首页', style: TextStyle(color: navColor))),
59 | BottomNavigationBarItem(
60 | activeIcon:
61 | Icon(Icons.access_alarm, size: 26, color: navSelectedColor),
62 | icon:
63 | Icon(Icons.access_alarm_outlined, size: 26, color: navColor),
64 | title: Text('鱼塘', style: TextStyle(color: navColor))),
65 | BottomNavigationBarItem(
66 | title: Text('卖闲置', style: TextStyle(color: navColor)),
67 | icon: Icon(Icons.access_alarm,
68 | size: 26, color: Colors.transparent)),
69 | BottomNavigationBarItem(
70 | activeIcon: Icon(Icons.info, size: 26, color: navSelectedColor),
71 | icon: Icon(Icons.info_outlined, size: 26, color: navColor),
72 | title: Text('消息', style: TextStyle(color: navColor))),
73 | BottomNavigationBarItem(
74 | activeIcon: Icon(Icons.person, size: 26, color: navSelectedColor),
75 | icon: Icon(Icons.person_outlined, size: 26, color: navColor),
76 | title: Text('我的', style: TextStyle(color: navColor)))
77 | ],
78 | onTap: (int index) {
79 | setState(() {
80 | _currentIndex = index;
81 | });
82 | _pageController.jumpToPage(_currentIndex);
83 | },
84 | ),
85 | );
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/lib/pages/Login.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/config/config.dart';
2 | import 'package:provider/provider.dart';
3 | import 'package:fishflutter/provider/Counter.dart';
4 | import 'package:fishflutter/utils/UISize.dart';
5 | import 'package:fishflutter/utils/HexColor.dart';
6 | import 'package:flutter/material.dart';
7 |
8 | class Login extends StatefulWidget {
9 | Login({Key key}) : super(key: key);
10 |
11 | @override
12 | _LoginState createState() => _LoginState();
13 | }
14 |
15 | class _LoginState extends State {
16 | @override
17 | void initState() {
18 | super.initState();
19 | }
20 |
21 | @override
22 | Widget build(BuildContext context) {
23 | UISize().init(context);
24 | final counter = Provider.of(context);
25 | return Scaffold(
26 | appBar: AppBar(
27 | elevation: 0,
28 | backgroundColor: HexColor("FFFFFF"),
29 | ),
30 | body: Container(
31 | color: HexColor("FFFFFF"),
32 | child: Column(
33 | mainAxisAlignment: MainAxisAlignment.center,
34 | children: [
35 | Image.asset(
36 | Config.imagePrefix + "hi.png",
37 | fit: BoxFit.cover,
38 | ),
39 | SizedBox(
40 | width: UISize.screenWidth / 1.1,
41 | child: RaisedButton(
42 | shape: RoundedRectangleBorder(
43 | borderRadius: BorderRadius.circular(25),
44 | ),
45 | color: HexColor("F87C22"),
46 | onPressed: () {},
47 | child: Row(
48 | mainAxisAlignment: MainAxisAlignment.center,
49 | children: [
50 | Image.asset(Config.imagePrefix + "taobao.png",
51 | fit: BoxFit.cover),
52 | Text("快速登录", style: TextStyle(color: Colors.white))
53 | ],
54 | )),
55 | ),
56 | SizedBox(
57 | width: UISize.screenWidth / 1.1,
58 | child: RaisedButton(
59 | shape: RoundedRectangleBorder(
60 | borderRadius: BorderRadius.circular(25),
61 | ),
62 | color: HexColor("48A2F8"),
63 | onPressed: () {},
64 | child: Row(
65 | mainAxisAlignment: MainAxisAlignment.center,
66 | children: [
67 | Image.asset(Config.imagePrefix + "zhifubao.png",
68 | fit: BoxFit.contain),
69 | Text("快速登录", style: TextStyle(color: Colors.white))
70 | ],
71 | )),
72 | ),
73 | SizedBox(
74 | width: UISize.screenWidth / 1.1,
75 | child: RaisedButton(
76 | shape: RoundedRectangleBorder(
77 | side: BorderSide(color: Colors.black45),
78 | borderRadius: BorderRadius.circular(25),
79 | ),
80 | onPressed: () {
81 | counter.increment();
82 | },
83 | color: Colors.white,
84 | child: Text("账号密码/短信验证码登录 ${counter.count}",
85 | style: TextStyle(color: Colors.black))))
86 | ],
87 | )));
88 | }
89 | }
90 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: fishflutter
2 | description: A new Flutter project.
3 |
4 | # The following line prevents the package from being accidentally published to
5 | # pub.dev using `pub publish`. This is preferred for private packages.
6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev
7 |
8 | # The following defines the version and build number for your application.
9 | # A version number is three numbers separated by dots, like 1.2.43
10 | # followed by an optional build number separated by a +.
11 | # Both the version and the builder number may be overridden in flutter
12 | # build by specifying --build-name and --build-number, respectively.
13 | # In Android, build-name is used as versionName while build-number used as versionCode.
14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
16 | # Read more about iOS versioning at
17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 |
27 | dio: ^5.0.0
28 | provider: ^6.0.0
29 | # The following adds the Cupertino Icons font to your application.
30 | # Use with the CupertinoIcons class for iOS style icons.
31 | cupertino_icons: ^1.0.0
32 | flutter_staggered_grid_view: ^0.6.0
33 | awsome_video_player: ^1.0.8+1
34 | flutter_screenutil: ^5.0.0
35 | dev_dependencies:
36 | flutter_test:
37 | sdk: flutter
38 |
39 | # For information on the generic Dart part of this file, see the
40 | # following page: https://dart.dev/tools/pub/pubspec
41 |
42 | # The following section is specific to Flutter.
43 | flutter:
44 |
45 | # The following line ensures that the Material Icons font is
46 | # included with your application, so that you can use the icons in
47 | # the material Icons class.
48 | uses-material-design: true
49 |
50 | # To add assets to your application, add an assets section, like this:
51 | assets:
52 | - assets/images/hi.png
53 | - assets/images/taobao.png
54 | - assets/images/zhifubao.png
55 | - assets/images/boot.png
56 | - assets/images/qiandao.png
57 | - assets/images/phone.png
58 | - assets/images/fruit.png
59 | - assets/images/package.png
60 | - assets/images/book.png
61 | - assets/images/more.png
62 | - assets/images/zhima.png
63 | # - images/a_dot_ham.jpeg
64 |
65 | # An image asset can refer to one or more resolution-specific "variants", see
66 | # https://flutter.dev/assets-and-images/#resolution-aware.
67 |
68 | # For details regarding adding assets from package dependencies, see
69 | # https://flutter.dev/assets-and-images/#from-packages
70 |
71 | # To add custom fonts to your application, add a fonts section here,
72 | # in this "flutter" section. Each entry in this list should have a
73 | # "family" key with the font family name, and a "fonts" key with a
74 | # list giving the asset and other descriptors for the font. For
75 | # example:
76 | # fonts:
77 | # - family: Schyler
78 | # fonts:
79 | # - asset: fonts/Schyler-Regular.ttf
80 | # - asset: fonts/Schyler-Italic.ttf
81 | # style: italic
82 | # - family: Trajan Pro
83 | # fonts:
84 | # - asset: fonts/TrajanPro.ttf
85 | # - asset: fonts/TrajanPro_Bold.ttf
86 | # weight: 700
87 | #
88 | # For details regarding fonts from package dependencies,
89 | # see https://flutter.dev/custom-fonts/#from-packages
90 |
--------------------------------------------------------------------------------
/lib/components/BlockNav2.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/utils/HexColor.dart';
2 | import 'package:fishflutter/utils/UISize.dart';
3 | import 'package:flutter/material.dart';
4 |
5 | class BlockNav2 extends StatelessWidget {
6 | const BlockNav2({Key key}) : super(key: key);
7 | @override
8 | Widget build(BuildContext context) {
9 | UISize().init(context);
10 | return Container(
11 | margin: EdgeInsets.only(top: 10),
12 | decoration: BoxDecoration(
13 | borderRadius: BorderRadius.circular(10),
14 | color: Colors.white,
15 | ),
16 | child: Column(
17 | crossAxisAlignment: CrossAxisAlignment.start,
18 | children: [
19 | Container(
20 | margin: EdgeInsets.only(top: 4, bottom: 4),
21 | child: Text(" 卖闲置换钱",
22 | style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold)),
23 | ),
24 | Row(
25 | crossAxisAlignment: CrossAxisAlignment.start,
26 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
27 | children: [
28 | Container(
29 | margin: EdgeInsets.only(left: 10),
30 | padding: EdgeInsets.all(6),
31 | decoration: BoxDecoration(
32 | borderRadius: BorderRadius.circular(10),
33 | color: HexColor("F8F8F8"),
34 | ),
35 | width: UISize.screenWidth / 2.4,
36 | child: Row(
37 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
38 | children: [
39 | Column(
40 | crossAxisAlignment: CrossAxisAlignment.start,
41 | children: [
42 | Text("上门回 ▶",
43 | style: TextStyle(
44 | fontSize: 13,
45 | color: HexColor("FE2A1F"))),
46 | Text("57 类免费上门",
47 | style: TextStyle(
48 | fontSize: 11, color: Colors.grey)),
49 | ]),
50 | Image.network("https://unsplash.it/30/30/?random"),
51 | ])),
52 | Container(
53 | margin: EdgeInsets.only(bottom: 10),
54 | padding: EdgeInsets.all(6),
55 | decoration: BoxDecoration(
56 | borderRadius: BorderRadius.circular(10),
57 | color: HexColor("F8F8F8"),
58 | ),
59 | width: UISize.screenWidth / 4.8,
60 | child: Column(children: [
61 | Text("手机寄卖 ▶",
62 | style: TextStyle(
63 | fontSize: 13, color: HexColor("FE8E2D"))),
64 | Text("48小时卖掉",
65 | style: TextStyle(fontSize: 11, color: Colors.grey))
66 | ])),
67 | Container(
68 | margin: EdgeInsets.only(bottom: 10, right: 10),
69 | padding: EdgeInsets.all(6),
70 | decoration: BoxDecoration(
71 | borderRadius: BorderRadius.circular(10),
72 | color: HexColor("F8F8F8"),
73 | ),
74 | width: UISize.screenWidth / 4.8,
75 | child: Column(children: [
76 | Text("淘宝转卖 ▶",
77 | style: TextStyle(
78 | fontSize: 13, color: HexColor("FEC345"))),
79 | Text("一键发布",
80 | style: TextStyle(fontSize: 11, color: Colors.grey))
81 | ])),
82 | ])
83 | ],
84 | ),
85 | );
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/lib/pages/Home.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/components/FallsList.dart';
2 | import 'package:fishflutter/components/Mask.dart';
3 | import 'package:fishflutter/config/config.dart';
4 | import 'package:fishflutter/utils/HexColor.dart';
5 | import 'package:fishflutter/utils/UISize.dart';
6 | import 'package:flutter/material.dart';
7 |
8 | class Home extends StatefulWidget {
9 | @override
10 | HomeState createState() => HomeState();
11 | }
12 |
13 | class HomeState extends State {
14 | @override
15 | Widget build(BuildContext context) {
16 | UISize().init(context);
17 | return Container(
18 | color: HexColor("#F2F2F2"),
19 | child: Stack(
20 | children: [
21 | FullsList(),
22 | Positioned(
23 | top: 0,
24 | left: 0,
25 | child: Container(
26 | decoration: BoxDecoration(
27 | color: HexColor("FFE915"),
28 | borderRadius: BorderRadius.only(
29 | bottomLeft: Radius.circular(20),
30 | bottomRight: Radius.circular(20))),
31 | height: 100,
32 | width: UISize.screenWidth,
33 | child: Container(
34 | margin: EdgeInsets.only(top: 10),
35 | child: Row(
36 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
37 | crossAxisAlignment: CrossAxisAlignment.center,
38 | children: [
39 | Padding(
40 | padding: EdgeInsets.only(left: 20),
41 | child: Icon(Icons.qr_code_scanner)),
42 | SizedBox(
43 | width: 200,
44 | child: Row(
45 | mainAxisAlignment: MainAxisAlignment.spaceEvenly,
46 | children: [
47 | Text(
48 | "关注",
49 | style: TextStyle(fontSize: 18),
50 | ),
51 | Container(
52 | decoration: BoxDecoration(
53 | border: Border(
54 | bottom: BorderSide(
55 | color: Colors.black,
56 | width: 3,
57 | ),
58 | )),
59 | child: Text(
60 | "首页",
61 | style: TextStyle(
62 | fontSize: 20,
63 | fontWeight: FontWeight.bold,
64 | ),
65 | ),
66 | ),
67 | Text(
68 | "海外",
69 | style: TextStyle(fontSize: 18),
70 | )
71 | ]),
72 | ),
73 | Image.asset(
74 | Config.imagePrefix + "qiandao.png",
75 | width: 50,
76 | fit: BoxFit.cover,
77 | )
78 | ],
79 | ),
80 | ),
81 | ),
82 | //搜索框
83 | ),
84 | Positioned(
85 | top: UISize.screenHeight / 8,
86 | left: UISize.screenWidth / 20,
87 | child: Container(
88 | width: UISize.screenWidth / 1.1,
89 | height: UISize.screenHeight / 16,
90 | alignment: Alignment.center,
91 | child: TextField(
92 | decoration: InputDecoration(
93 | fillColor: Colors.white,
94 | filled: true,
95 | border: OutlineInputBorder(
96 | borderRadius: BorderRadius.circular(20),
97 | borderSide: BorderSide.none),
98 | alignLabelWithHint: true,
99 | //prefix: Icon(Icons.search, color: Colors.grey),
100 | //prefixIcon: Icon(Icons.search, color: Colors.grey),
101 | contentPadding: EdgeInsets.symmetric(vertical: 4.0),
102 | hintText: "🔍 冰箱| 华为 mate30pro"),
103 | textAlign: TextAlign.center,
104 | ),
105 | ),
106 | ),
107 |
108 | //登录遮罩
109 | Positioned(
110 | top: UISize.screenHeight / 1.18,
111 | child: Mask(),
112 | )
113 | ],
114 | ));
115 | }
116 | }
117 |
--------------------------------------------------------------------------------
/lib/components/BlockNav1.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/components/ImagePlaceholder.dart';
2 | import 'package:fishflutter/utils/HexColor.dart';
3 | import 'package:fishflutter/utils/UISize.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | class BlockNav1 extends StatelessWidget {
7 | const BlockNav1({Key key}) : super(key: key);
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | UISize().init(context);
12 | return Container(
13 | padding: EdgeInsets.all(4),
14 | width: UISize.screenWidth / 1.4,
15 | decoration: BoxDecoration(
16 | borderRadius: BorderRadius.circular(10), color: Colors.white),
17 | child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [
18 | Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
19 | Container(
20 | margin: EdgeInsets.only(bottom: 6),
21 | child: RichText(
22 | text: TextSpan(
23 | text: "玩家",
24 | style: TextStyle(
25 | color: Colors.black,
26 | fontSize: 14,
27 | fontWeight: FontWeight.bold),
28 | children: [
29 | TextSpan(
30 | text: " 最懂的人最狠的货",
31 | style: TextStyle(color: Colors.grey, fontSize: 10))
32 | ]),
33 | ),
34 | ),
35 | Row(children: [
36 | ImagePlaceholder(radiusDirection: "L"),
37 | SizedBox(
38 | width: 1,
39 | height: 12,
40 | child: DecoratedBox(
41 | decoration: BoxDecoration(color: Colors.white),
42 | ),
43 | ),
44 | ImagePlaceholder(radiusDirection: "R"),
45 | ]),
46 | Row(
47 | mainAxisAlignment: MainAxisAlignment.spaceAround,
48 | children: [
49 | Container(
50 | margin: EdgeInsets.only(top: 4, bottom: 4),
51 | child: Text("租房",
52 | style: TextStyle(
53 | fontSize: 14, fontWeight: FontWeight.bold))),
54 | SizedBox(width: 60),
55 | Text("借租",
56 | style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold)),
57 | ],
58 | ),
59 | Row(children: [
60 | ImagePlaceholder(bgColor: "18CAFE", labelTitle: "免中介费"),
61 | SizedBox(
62 | width: 10,
63 | height: 12,
64 | child: DecoratedBox(
65 | decoration: BoxDecoration(color: Colors.white),
66 | ),
67 | ),
68 | ImagePlaceholder(bgColor: "12D4A7", labelTitle: "9.9月包邮"),
69 | ])
70 | ]),
71 | Container(
72 | padding: EdgeInsets.only(left: 10, right: 10),
73 | child: SizedBox(
74 | width: 1,
75 | height: 220,
76 | child: DecoratedBox(
77 | decoration: BoxDecoration(color: HexColor("F4F4F4")),
78 | ),
79 | ),
80 | ),
81 | Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
82 | Container(
83 | margin: EdgeInsets.only(bottom: 6),
84 | child: RichText(
85 | text: TextSpan(
86 | text: "免费送",
87 | style: TextStyle(
88 | color: Colors.black,
89 | fontSize: 14,
90 | fontWeight: FontWeight.bold),
91 | children: [
92 | TextSpan(
93 | text: " 41.9万件宝贝",
94 | style: TextStyle(color: Colors.grey, fontSize: 10))
95 | ])),
96 | ),
97 | Row(children: [
98 | ImagePlaceholder(radiusDirection: "L"),
99 | SizedBox(
100 | width: 1,
101 | height: 12,
102 | child: DecoratedBox(
103 | decoration: BoxDecoration(color: Colors.white),
104 | ),
105 | ),
106 | ImagePlaceholder(radiusDirection: "R"),
107 | ]),
108 | Row(
109 | children: [
110 | Container(
111 | margin: EdgeInsets.only(top: 4, bottom: 4),
112 | child: RichText(
113 | text: TextSpan(
114 | text: "咸鱼优品",
115 | style: TextStyle(
116 | color: Colors.black,
117 | fontSize: 14,
118 | fontWeight: FontWeight.bold),
119 | children: [
120 | TextSpan(
121 | text: " 二手正品好货",
122 | style:
123 | TextStyle(color: Colors.grey, fontSize: 10))
124 | ]),
125 | )),
126 | ],
127 | ),
128 | Row(children: [
129 | ImagePlaceholder(bgColor: "FF9218", labelTitle: "原装二手"),
130 | SizedBox(
131 | width: 10,
132 | height: 12,
133 | child: DecoratedBox(
134 | decoration: BoxDecoration(color: Colors.white),
135 | ),
136 | ),
137 | ImagePlaceholder(bgColor: "1962CE", labelTitle: "库存样机"),
138 | ])
139 | ]),
140 | ]),
141 | );
142 | }
143 | }
144 |
--------------------------------------------------------------------------------
/lib/components/FallsList.dart:
--------------------------------------------------------------------------------
1 | import 'package:fishflutter/components/BlockNav1.dart';
2 | import 'package:fishflutter/components/BlockNav2.dart';
3 | import 'package:fishflutter/components/HeaderNav.dart';
4 | import 'package:fishflutter/config/config.dart';
5 | import 'package:fishflutter/maps/ImgList.dart';
6 | import 'package:fishflutter/mock/ImgListMock.dart';
7 | import 'package:fishflutter/utils/UISize.dart';
8 | import 'package:flutter/material.dart';
9 | import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
10 |
11 | class FullsList extends StatefulWidget {
12 | FullsList({Key key}) : super(key: key);
13 |
14 | @override
15 | _FullsListState createState() => _FullsListState();
16 | }
17 |
18 | class _FullsListState extends State {
19 | ScrollController _controller = ScrollController();
20 | @override
21 | Widget build(BuildContext context) {
22 | UISize().init(context);
23 | return Container(
24 | alignment: Alignment.center,
25 | margin: EdgeInsets.only(top: 150),
26 | child: CustomScrollView(
27 | physics: AlwaysScrollableScrollPhysics(),
28 | shrinkWrap: true,
29 | controller: _controller,
30 | slivers: [
31 | SliverToBoxAdapter(child: HeaderNav()),
32 | SliverToBoxAdapter(child: BlockNav1()),
33 | SliverToBoxAdapter(child: BlockNav2()),
34 | SliverToBoxAdapter(
35 | child: RefreshIndicator(
36 | onRefresh: () async {
37 | await Future.delayed(Duration(seconds: 5));
38 | },
39 | child: StaggeredGridView.countBuilder(
40 | physics: BouncingScrollPhysics(),
41 | shrinkWrap: true,
42 | itemCount: imgListMock.length,
43 | crossAxisCount: 4,
44 | mainAxisSpacing: 2.0,
45 | crossAxisSpacing: 2.0,
46 | itemBuilder: (context, index) {
47 | return itemWidget(index);
48 | },
49 | staggeredTileBuilder: (index) => StaggeredTile.fit(2),
50 | )))
51 | ]));
52 | }
53 |
54 | Widget itemWidget(int index) {
55 | return Container(
56 | decoration: BoxDecoration(boxShadow: [
57 | BoxShadow(offset: Offset(2, 1), color: Colors.grey, blurRadius: 10)
58 | ], borderRadius: BorderRadius.circular(20), color: Colors.white),
59 | margin: EdgeInsets.only(bottom: 10, left: 10, right: 10),
60 | child: Column(
61 | crossAxisAlignment: CrossAxisAlignment.center,
62 | mainAxisAlignment: MainAxisAlignment.start,
63 | children: [
64 | ClipRRect(
65 | borderRadius: BorderRadius.only(
66 | topLeft: Radius.circular(10),
67 | topRight: Radius.circular(10)),
68 | child: Image.network(ImgList.fromJson(imgListMock[index]).src,
69 | width: 200)),
70 | Text(ImgList.fromJson(imgListMock[index]).title,
71 | overflow: TextOverflow.ellipsis,
72 | style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold)),
73 | Container(
74 | margin: EdgeInsets.only(left: 10, right: 10),
75 | child: Row(
76 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
77 | children: [
78 | Text(
79 | "¥" +
80 | ImgList.fromJson(imgListMock[index])
81 | .prices
82 | .toString(),
83 | style: TextStyle(
84 | fontSize: 14,
85 | fontWeight: FontWeight.bold,
86 | color: Colors.red)),
87 | Text(
88 | ImgList.fromJson(imgListMock[index]).like.toString() +
89 | "人想要",
90 | style: TextStyle(fontSize: 10, color: Colors.grey)),
91 | ],
92 | )),
93 | Container(
94 | margin: EdgeInsets.only(left: 10, right: 10),
95 | child: Row(
96 | crossAxisAlignment: CrossAxisAlignment.center,
97 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
98 | children: [
99 | SizedBox(
100 | width: 20,
101 | child: CircleAvatar(
102 | backgroundImage: NetworkImage(
103 | ImgList.fromJson(imgListMock[index]).author,
104 | ),
105 | ),
106 | ),
107 | SizedBox(width: 8),
108 | Expanded(
109 | child: Text(
110 | ImgList.fromJson(imgListMock[index]).name,
111 | overflow: TextOverflow.ellipsis,
112 | ),
113 | ),
114 | SizedBox(width: 8),
115 | ImgList.fromJson(imgListMock[index]).zhima
116 | ? Image.asset(
117 | Config.imagePrefix + 'zhima.png',
118 | fit: BoxFit.cover,
119 | width: 100,
120 | )
121 | : SizedBox(
122 | child: Container(
123 | alignment: Alignment.center,
124 | padding: const EdgeInsets.only(
125 | left: 3.0, right: 3.0),
126 | decoration: BoxDecoration(
127 | borderRadius: BorderRadius.circular(4),
128 | border: Border.all(color: Colors.grey)),
129 | child: Text(
130 | "广告",
131 | style: TextStyle(
132 | color: Colors.grey,
133 | fontSize: 10,
134 | ),
135 | ),
136 | ))
137 | ]))
138 | ]));
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
9 | url: "https://pub.dev"
10 | source: hosted
11 | version: "2.10.0"
12 | awsome_video_player:
13 | dependency: "direct main"
14 | description:
15 | name: awsome_video_player
16 | sha256: e7c4b462f5de951d582388343276a039f9f44d3effaa8e26bedcdd713948db7e
17 | url: "https://pub.dev"
18 | source: hosted
19 | version: "1.0.8+1"
20 | boolean_selector:
21 | dependency: transitive
22 | description:
23 | name: boolean_selector
24 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
25 | url: "https://pub.dev"
26 | source: hosted
27 | version: "2.1.1"
28 | characters:
29 | dependency: transitive
30 | description:
31 | name: characters
32 | sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
33 | url: "https://pub.dev"
34 | source: hosted
35 | version: "1.2.1"
36 | clock:
37 | dependency: transitive
38 | description:
39 | name: clock
40 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
41 | url: "https://pub.dev"
42 | source: hosted
43 | version: "1.1.1"
44 | collection:
45 | dependency: transitive
46 | description:
47 | name: collection
48 | sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
49 | url: "https://pub.dev"
50 | source: hosted
51 | version: "1.17.0"
52 | connectivity:
53 | dependency: transitive
54 | description:
55 | name: connectivity
56 | sha256: "63c75e3b899f89b4f3c0ed2aedb1a2833bb04cb141d74718bf8f38b1d23f7a32"
57 | url: "https://pub.dev"
58 | source: hosted
59 | version: "0.4.9+5"
60 | connectivity_for_web:
61 | dependency: transitive
62 | description:
63 | name: connectivity_for_web
64 | sha256: a90f39f9e2c9533a189b05596ce2eea9494b61efa34a78f079ba06fa4c50075d
65 | url: "https://pub.dev"
66 | source: hosted
67 | version: "0.3.1+4"
68 | connectivity_macos:
69 | dependency: transitive
70 | description:
71 | name: connectivity_macos
72 | sha256: "2ac537281b02e1117f50b154bd5a6b18cb889d6c18e2f415104886e4d2b6549e"
73 | url: "https://pub.dev"
74 | source: hosted
75 | version: "0.1.0+7"
76 | connectivity_platform_interface:
77 | dependency: transitive
78 | description:
79 | name: connectivity_platform_interface
80 | sha256: "3e3c0891ec5d22c0e265b0df5743810c91160a30ac4f3327cf04fd24782e8add"
81 | url: "https://pub.dev"
82 | source: hosted
83 | version: "1.0.6"
84 | cupertino_icons:
85 | dependency: "direct main"
86 | description:
87 | name: cupertino_icons
88 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
89 | url: "https://pub.dev"
90 | source: hosted
91 | version: "1.0.5"
92 | dio:
93 | dependency: "direct main"
94 | description:
95 | name: dio
96 | sha256: "9fdbf71baeb250fc9da847f6cb2052196f62c19906a3657adfc18631a667d316"
97 | url: "https://pub.dev"
98 | source: hosted
99 | version: "5.0.0"
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 | flutter:
109 | dependency: "direct main"
110 | description: flutter
111 | source: sdk
112 | version: "0.0.0"
113 | flutter_screenutil:
114 | dependency: "direct main"
115 | description:
116 | name: flutter_screenutil
117 | sha256: "8e049ecdc1a62c90e6bf0e9c8398ace8dde81b92889c70cfe06281d79d59113a"
118 | url: "https://pub.dev"
119 | source: hosted
120 | version: "5.6.1"
121 | flutter_staggered_grid_view:
122 | dependency: "direct main"
123 | description:
124 | name: flutter_staggered_grid_view
125 | sha256: "1312314293acceb65b92754298754801b0e1f26a1845833b740b30415bbbcf07"
126 | url: "https://pub.dev"
127 | source: hosted
128 | version: "0.6.2"
129 | flutter_test:
130 | dependency: "direct dev"
131 | description: flutter
132 | source: sdk
133 | version: "0.0.0"
134 | flutter_web_plugins:
135 | dependency: transitive
136 | description: flutter
137 | source: sdk
138 | version: "0.0.0"
139 | http_parser:
140 | dependency: transitive
141 | description:
142 | name: http_parser
143 | sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
144 | url: "https://pub.dev"
145 | source: hosted
146 | version: "4.0.2"
147 | js:
148 | dependency: transitive
149 | description:
150 | name: js
151 | sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
152 | url: "https://pub.dev"
153 | source: hosted
154 | version: "0.6.5"
155 | matcher:
156 | dependency: transitive
157 | description:
158 | name: matcher
159 | sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
160 | url: "https://pub.dev"
161 | source: hosted
162 | version: "0.12.13"
163 | material_color_utilities:
164 | dependency: transitive
165 | description:
166 | name: material_color_utilities
167 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
168 | url: "https://pub.dev"
169 | source: hosted
170 | version: "0.2.0"
171 | meta:
172 | dependency: transitive
173 | description:
174 | name: meta
175 | sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
176 | url: "https://pub.dev"
177 | source: hosted
178 | version: "1.8.0"
179 | nested:
180 | dependency: transitive
181 | description:
182 | name: nested
183 | sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
184 | url: "https://pub.dev"
185 | source: hosted
186 | version: "1.0.0"
187 | orientation:
188 | dependency: transitive
189 | description:
190 | name: orientation
191 | sha256: "16f229c87220a897db803456e0709364ffb25fc4405df0e3214bef99fa91d81c"
192 | url: "https://pub.dev"
193 | source: hosted
194 | version: "1.3.0"
195 | path:
196 | dependency: transitive
197 | description:
198 | name: path
199 | sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
200 | url: "https://pub.dev"
201 | source: hosted
202 | version: "1.8.2"
203 | plugin_platform_interface:
204 | dependency: transitive
205 | description:
206 | name: plugin_platform_interface
207 | sha256: c3ebbff365bfb1b5f7b690c9857d2dabea167f35b05eb7586186499b407efb37
208 | url: "https://pub.dev"
209 | source: hosted
210 | version: "1.0.3"
211 | provider:
212 | dependency: "direct main"
213 | description:
214 | name: provider
215 | sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
216 | url: "https://pub.dev"
217 | source: hosted
218 | version: "6.0.5"
219 | screen:
220 | dependency: transitive
221 | description:
222 | name: screen
223 | sha256: f953f9f906b15b971597acadad16b5ab1d3912cbb325e807416f223313ce8ed6
224 | url: "https://pub.dev"
225 | source: hosted
226 | version: "0.0.5"
227 | sky_engine:
228 | dependency: transitive
229 | description: flutter
230 | source: sdk
231 | version: "0.0.99"
232 | source_span:
233 | dependency: transitive
234 | description:
235 | name: source_span
236 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
237 | url: "https://pub.dev"
238 | source: hosted
239 | version: "1.9.1"
240 | stack_trace:
241 | dependency: transitive
242 | description:
243 | name: stack_trace
244 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
245 | url: "https://pub.dev"
246 | source: hosted
247 | version: "1.11.0"
248 | stream_channel:
249 | dependency: transitive
250 | description:
251 | name: stream_channel
252 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
253 | url: "https://pub.dev"
254 | source: hosted
255 | version: "2.1.1"
256 | string_scanner:
257 | dependency: transitive
258 | description:
259 | name: string_scanner
260 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
261 | url: "https://pub.dev"
262 | source: hosted
263 | version: "1.2.0"
264 | term_glyph:
265 | dependency: transitive
266 | description:
267 | name: term_glyph
268 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
269 | url: "https://pub.dev"
270 | source: hosted
271 | version: "1.2.1"
272 | test_api:
273 | dependency: transitive
274 | description:
275 | name: test_api
276 | sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
277 | url: "https://pub.dev"
278 | source: hosted
279 | version: "0.4.16"
280 | typed_data:
281 | dependency: transitive
282 | description:
283 | name: typed_data
284 | sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
285 | url: "https://pub.dev"
286 | source: hosted
287 | version: "1.3.1"
288 | vector_math:
289 | dependency: transitive
290 | description:
291 | name: vector_math
292 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
293 | url: "https://pub.dev"
294 | source: hosted
295 | version: "2.1.4"
296 | video_player:
297 | dependency: transitive
298 | description:
299 | name: video_player
300 | sha256: "474a32082d4090de451da25ddea7a02e900fe6f4f424c9f8a82c5164ae194f27"
301 | url: "https://pub.dev"
302 | source: hosted
303 | version: "0.10.12+5"
304 | video_player_platform_interface:
305 | dependency: transitive
306 | description:
307 | name: video_player_platform_interface
308 | sha256: bb4802458d45af51566048bcacd4977e2fbc1539bc6aa683893e8c82d009fa9c
309 | url: "https://pub.dev"
310 | source: hosted
311 | version: "2.2.0"
312 | video_player_web:
313 | dependency: transitive
314 | description:
315 | name: video_player_web
316 | sha256: "1b0fb9d61cc7dc4e4a79c1ca9d1903ba97bb1b8571868262184e9190babb1241"
317 | url: "https://pub.dev"
318 | source: hosted
319 | version: "0.1.4+1"
320 | sdks:
321 | dart: ">=2.18.0 <3.0.0"
322 | flutter: ">=2.0.1"
323 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
16 | /* End PBXBuildFile section */
17 |
18 | /* Begin PBXCopyFilesBuildPhase section */
19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
20 | isa = PBXCopyFilesBuildPhase;
21 | buildActionMask = 2147483647;
22 | dstPath = "";
23 | dstSubfolderSpec = 10;
24 | files = (
25 | );
26 | name = "Embed Frameworks";
27 | runOnlyForDeploymentPostprocessing = 0;
28 | };
29 | /* End PBXCopyFilesBuildPhase section */
30 |
31 | /* Begin PBXFileReference section */
32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
45 | /* End PBXFileReference section */
46 |
47 | /* Begin PBXFrameworksBuildPhase section */
48 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
49 | isa = PBXFrameworksBuildPhase;
50 | buildActionMask = 2147483647;
51 | files = (
52 | );
53 | runOnlyForDeploymentPostprocessing = 0;
54 | };
55 | /* End PBXFrameworksBuildPhase section */
56 |
57 | /* Begin PBXGroup section */
58 | 9740EEB11CF90186004384FC /* Flutter */ = {
59 | isa = PBXGroup;
60 | children = (
61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
65 | );
66 | name = Flutter;
67 | sourceTree = "";
68 | };
69 | 97C146E51CF9000F007C117D = {
70 | isa = PBXGroup;
71 | children = (
72 | 9740EEB11CF90186004384FC /* Flutter */,
73 | 97C146F01CF9000F007C117D /* Runner */,
74 | 97C146EF1CF9000F007C117D /* Products */,
75 | );
76 | sourceTree = "";
77 | };
78 | 97C146EF1CF9000F007C117D /* Products */ = {
79 | isa = PBXGroup;
80 | children = (
81 | 97C146EE1CF9000F007C117D /* Runner.app */,
82 | );
83 | name = Products;
84 | sourceTree = "";
85 | };
86 | 97C146F01CF9000F007C117D /* Runner */ = {
87 | isa = PBXGroup;
88 | children = (
89 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
92 | 97C147021CF9000F007C117D /* Info.plist */,
93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */,
96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */,
97 | );
98 | path = Runner;
99 | sourceTree = "";
100 | };
101 | /* End PBXGroup section */
102 |
103 | /* Begin PBXNativeTarget section */
104 | 97C146ED1CF9000F007C117D /* Runner */ = {
105 | isa = PBXNativeTarget;
106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
107 | buildPhases = (
108 | 9740EEB61CF901F6004384FC /* Run Script */,
109 | 97C146EA1CF9000F007C117D /* Sources */,
110 | 97C146EB1CF9000F007C117D /* Frameworks */,
111 | 97C146EC1CF9000F007C117D /* Resources */,
112 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
114 | );
115 | buildRules = (
116 | );
117 | dependencies = (
118 | );
119 | name = Runner;
120 | productName = Runner;
121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
122 | productType = "com.apple.product-type.application";
123 | };
124 | /* End PBXNativeTarget section */
125 |
126 | /* Begin PBXProject section */
127 | 97C146E61CF9000F007C117D /* Project object */ = {
128 | isa = PBXProject;
129 | attributes = {
130 | LastUpgradeCheck = 1020;
131 | ORGANIZATIONNAME = "";
132 | TargetAttributes = {
133 | 97C146ED1CF9000F007C117D = {
134 | CreatedOnToolsVersion = 7.3.1;
135 | LastSwiftMigration = 1100;
136 | };
137 | };
138 | };
139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
140 | compatibilityVersion = "Xcode 9.3";
141 | developmentRegion = en;
142 | hasScannedForEncodings = 0;
143 | knownRegions = (
144 | en,
145 | Base,
146 | );
147 | mainGroup = 97C146E51CF9000F007C117D;
148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
149 | projectDirPath = "";
150 | projectRoot = "";
151 | targets = (
152 | 97C146ED1CF9000F007C117D /* Runner */,
153 | );
154 | };
155 | /* End PBXProject section */
156 |
157 | /* Begin PBXResourcesBuildPhase section */
158 | 97C146EC1CF9000F007C117D /* Resources */ = {
159 | isa = PBXResourcesBuildPhase;
160 | buildActionMask = 2147483647;
161 | files = (
162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
166 | );
167 | runOnlyForDeploymentPostprocessing = 0;
168 | };
169 | /* End PBXResourcesBuildPhase section */
170 |
171 | /* Begin PBXShellScriptBuildPhase section */
172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
173 | isa = PBXShellScriptBuildPhase;
174 | buildActionMask = 2147483647;
175 | files = (
176 | );
177 | inputPaths = (
178 | );
179 | name = "Thin Binary";
180 | outputPaths = (
181 | );
182 | runOnlyForDeploymentPostprocessing = 0;
183 | shellPath = /bin/sh;
184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
185 | };
186 | 9740EEB61CF901F6004384FC /* Run Script */ = {
187 | isa = PBXShellScriptBuildPhase;
188 | buildActionMask = 2147483647;
189 | files = (
190 | );
191 | inputPaths = (
192 | );
193 | name = "Run Script";
194 | outputPaths = (
195 | );
196 | runOnlyForDeploymentPostprocessing = 0;
197 | shellPath = /bin/sh;
198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
199 | };
200 | /* End PBXShellScriptBuildPhase section */
201 |
202 | /* Begin PBXSourcesBuildPhase section */
203 | 97C146EA1CF9000F007C117D /* Sources */ = {
204 | isa = PBXSourcesBuildPhase;
205 | buildActionMask = 2147483647;
206 | files = (
207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
209 | );
210 | runOnlyForDeploymentPostprocessing = 0;
211 | };
212 | /* End PBXSourcesBuildPhase section */
213 |
214 | /* Begin PBXVariantGroup section */
215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
216 | isa = PBXVariantGroup;
217 | children = (
218 | 97C146FB1CF9000F007C117D /* Base */,
219 | );
220 | name = Main.storyboard;
221 | sourceTree = "";
222 | };
223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
224 | isa = PBXVariantGroup;
225 | children = (
226 | 97C147001CF9000F007C117D /* Base */,
227 | );
228 | name = LaunchScreen.storyboard;
229 | sourceTree = "";
230 | };
231 | /* End PBXVariantGroup section */
232 |
233 | /* Begin XCBuildConfiguration section */
234 | 249021D3217E4FDB00AE95B9 /* Profile */ = {
235 | isa = XCBuildConfiguration;
236 | buildSettings = {
237 | ALWAYS_SEARCH_USER_PATHS = NO;
238 | CLANG_ANALYZER_NONNULL = YES;
239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
240 | CLANG_CXX_LIBRARY = "libc++";
241 | CLANG_ENABLE_MODULES = YES;
242 | CLANG_ENABLE_OBJC_ARC = YES;
243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
244 | CLANG_WARN_BOOL_CONVERSION = YES;
245 | CLANG_WARN_COMMA = YES;
246 | CLANG_WARN_CONSTANT_CONVERSION = YES;
247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
249 | CLANG_WARN_EMPTY_BODY = YES;
250 | CLANG_WARN_ENUM_CONVERSION = YES;
251 | CLANG_WARN_INFINITE_RECURSION = YES;
252 | CLANG_WARN_INT_CONVERSION = YES;
253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
258 | CLANG_WARN_STRICT_PROTOTYPES = YES;
259 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
260 | CLANG_WARN_UNREACHABLE_CODE = YES;
261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
263 | COPY_PHASE_STRIP = NO;
264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
265 | ENABLE_NS_ASSERTIONS = NO;
266 | ENABLE_STRICT_OBJC_MSGSEND = YES;
267 | GCC_C_LANGUAGE_STANDARD = gnu99;
268 | GCC_NO_COMMON_BLOCKS = YES;
269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
271 | GCC_WARN_UNDECLARED_SELECTOR = YES;
272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
273 | GCC_WARN_UNUSED_FUNCTION = YES;
274 | GCC_WARN_UNUSED_VARIABLE = YES;
275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
276 | MTL_ENABLE_DEBUG_INFO = NO;
277 | SDKROOT = iphoneos;
278 | SUPPORTED_PLATFORMS = iphoneos;
279 | TARGETED_DEVICE_FAMILY = "1,2";
280 | VALIDATE_PRODUCT = YES;
281 | };
282 | name = Profile;
283 | };
284 | 249021D4217E4FDB00AE95B9 /* Profile */ = {
285 | isa = XCBuildConfiguration;
286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
287 | buildSettings = {
288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
289 | CLANG_ENABLE_MODULES = YES;
290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
291 | ENABLE_BITCODE = NO;
292 | FRAMEWORK_SEARCH_PATHS = (
293 | "$(inherited)",
294 | "$(PROJECT_DIR)/Flutter",
295 | );
296 | INFOPLIST_FILE = Runner/Info.plist;
297 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
298 | LIBRARY_SEARCH_PATHS = (
299 | "$(inherited)",
300 | "$(PROJECT_DIR)/Flutter",
301 | );
302 | PRODUCT_BUNDLE_IDENTIFIER = com.example.fishflutter;
303 | PRODUCT_NAME = "$(TARGET_NAME)";
304 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
305 | SWIFT_VERSION = 5.0;
306 | VERSIONING_SYSTEM = "apple-generic";
307 | };
308 | name = Profile;
309 | };
310 | 97C147031CF9000F007C117D /* Debug */ = {
311 | isa = XCBuildConfiguration;
312 | buildSettings = {
313 | ALWAYS_SEARCH_USER_PATHS = NO;
314 | CLANG_ANALYZER_NONNULL = YES;
315 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
316 | CLANG_CXX_LIBRARY = "libc++";
317 | CLANG_ENABLE_MODULES = YES;
318 | CLANG_ENABLE_OBJC_ARC = YES;
319 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
320 | CLANG_WARN_BOOL_CONVERSION = YES;
321 | CLANG_WARN_COMMA = YES;
322 | CLANG_WARN_CONSTANT_CONVERSION = YES;
323 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
324 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
325 | CLANG_WARN_EMPTY_BODY = YES;
326 | CLANG_WARN_ENUM_CONVERSION = YES;
327 | CLANG_WARN_INFINITE_RECURSION = YES;
328 | CLANG_WARN_INT_CONVERSION = YES;
329 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
330 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
331 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
332 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
333 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
334 | CLANG_WARN_STRICT_PROTOTYPES = YES;
335 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
336 | CLANG_WARN_UNREACHABLE_CODE = YES;
337 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
338 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
339 | COPY_PHASE_STRIP = NO;
340 | DEBUG_INFORMATION_FORMAT = dwarf;
341 | ENABLE_STRICT_OBJC_MSGSEND = YES;
342 | ENABLE_TESTABILITY = YES;
343 | GCC_C_LANGUAGE_STANDARD = gnu99;
344 | GCC_DYNAMIC_NO_PIC = NO;
345 | GCC_NO_COMMON_BLOCKS = YES;
346 | GCC_OPTIMIZATION_LEVEL = 0;
347 | GCC_PREPROCESSOR_DEFINITIONS = (
348 | "DEBUG=1",
349 | "$(inherited)",
350 | );
351 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
352 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
353 | GCC_WARN_UNDECLARED_SELECTOR = YES;
354 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
355 | GCC_WARN_UNUSED_FUNCTION = YES;
356 | GCC_WARN_UNUSED_VARIABLE = YES;
357 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
358 | MTL_ENABLE_DEBUG_INFO = YES;
359 | ONLY_ACTIVE_ARCH = YES;
360 | SDKROOT = iphoneos;
361 | TARGETED_DEVICE_FAMILY = "1,2";
362 | };
363 | name = Debug;
364 | };
365 | 97C147041CF9000F007C117D /* Release */ = {
366 | isa = XCBuildConfiguration;
367 | buildSettings = {
368 | ALWAYS_SEARCH_USER_PATHS = NO;
369 | CLANG_ANALYZER_NONNULL = YES;
370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
371 | CLANG_CXX_LIBRARY = "libc++";
372 | CLANG_ENABLE_MODULES = YES;
373 | CLANG_ENABLE_OBJC_ARC = YES;
374 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
375 | CLANG_WARN_BOOL_CONVERSION = YES;
376 | CLANG_WARN_COMMA = YES;
377 | CLANG_WARN_CONSTANT_CONVERSION = YES;
378 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
379 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
380 | CLANG_WARN_EMPTY_BODY = YES;
381 | CLANG_WARN_ENUM_CONVERSION = YES;
382 | CLANG_WARN_INFINITE_RECURSION = YES;
383 | CLANG_WARN_INT_CONVERSION = YES;
384 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
385 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
386 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
387 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
388 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
389 | CLANG_WARN_STRICT_PROTOTYPES = YES;
390 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
391 | CLANG_WARN_UNREACHABLE_CODE = YES;
392 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
393 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
394 | COPY_PHASE_STRIP = NO;
395 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
396 | ENABLE_NS_ASSERTIONS = NO;
397 | ENABLE_STRICT_OBJC_MSGSEND = YES;
398 | GCC_C_LANGUAGE_STANDARD = gnu99;
399 | GCC_NO_COMMON_BLOCKS = YES;
400 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
401 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
402 | GCC_WARN_UNDECLARED_SELECTOR = YES;
403 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
404 | GCC_WARN_UNUSED_FUNCTION = YES;
405 | GCC_WARN_UNUSED_VARIABLE = YES;
406 | IPHONEOS_DEPLOYMENT_TARGET = 9.0;
407 | MTL_ENABLE_DEBUG_INFO = NO;
408 | SDKROOT = iphoneos;
409 | SUPPORTED_PLATFORMS = iphoneos;
410 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
411 | TARGETED_DEVICE_FAMILY = "1,2";
412 | VALIDATE_PRODUCT = YES;
413 | };
414 | name = Release;
415 | };
416 | 97C147061CF9000F007C117D /* Debug */ = {
417 | isa = XCBuildConfiguration;
418 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
419 | buildSettings = {
420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
421 | CLANG_ENABLE_MODULES = YES;
422 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
423 | ENABLE_BITCODE = NO;
424 | FRAMEWORK_SEARCH_PATHS = (
425 | "$(inherited)",
426 | "$(PROJECT_DIR)/Flutter",
427 | );
428 | INFOPLIST_FILE = Runner/Info.plist;
429 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
430 | LIBRARY_SEARCH_PATHS = (
431 | "$(inherited)",
432 | "$(PROJECT_DIR)/Flutter",
433 | );
434 | PRODUCT_BUNDLE_IDENTIFIER = com.example.fishflutter;
435 | PRODUCT_NAME = "$(TARGET_NAME)";
436 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
437 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
438 | SWIFT_VERSION = 5.0;
439 | VERSIONING_SYSTEM = "apple-generic";
440 | };
441 | name = Debug;
442 | };
443 | 97C147071CF9000F007C117D /* Release */ = {
444 | isa = XCBuildConfiguration;
445 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
446 | buildSettings = {
447 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
448 | CLANG_ENABLE_MODULES = YES;
449 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
450 | ENABLE_BITCODE = NO;
451 | FRAMEWORK_SEARCH_PATHS = (
452 | "$(inherited)",
453 | "$(PROJECT_DIR)/Flutter",
454 | );
455 | INFOPLIST_FILE = Runner/Info.plist;
456 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
457 | LIBRARY_SEARCH_PATHS = (
458 | "$(inherited)",
459 | "$(PROJECT_DIR)/Flutter",
460 | );
461 | PRODUCT_BUNDLE_IDENTIFIER = com.example.fishflutter;
462 | PRODUCT_NAME = "$(TARGET_NAME)";
463 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
464 | SWIFT_VERSION = 5.0;
465 | VERSIONING_SYSTEM = "apple-generic";
466 | };
467 | name = Release;
468 | };
469 | /* End XCBuildConfiguration section */
470 |
471 | /* Begin XCConfigurationList section */
472 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
473 | isa = XCConfigurationList;
474 | buildConfigurations = (
475 | 97C147031CF9000F007C117D /* Debug */,
476 | 97C147041CF9000F007C117D /* Release */,
477 | 249021D3217E4FDB00AE95B9 /* Profile */,
478 | );
479 | defaultConfigurationIsVisible = 0;
480 | defaultConfigurationName = Release;
481 | };
482 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
483 | isa = XCConfigurationList;
484 | buildConfigurations = (
485 | 97C147061CF9000F007C117D /* Debug */,
486 | 97C147071CF9000F007C117D /* Release */,
487 | 249021D4217E4FDB00AE95B9 /* Profile */,
488 | );
489 | defaultConfigurationIsVisible = 0;
490 | defaultConfigurationName = Release;
491 | };
492 | /* End XCConfigurationList section */
493 | };
494 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
495 | }
496 |
--------------------------------------------------------------------------------