diff --git a/add_to_app/books/android_books/app/build.gradle b/add_to_app/books/android_books/app/build.gradle index 46cfa3909..632552dd2 100644 --- a/add_to_app/books/android_books/app/build.gradle +++ b/add_to_app/books/android_books/app/build.gradle @@ -20,6 +20,7 @@ android { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig debug.signingConfig } } compileOptions { diff --git a/add_to_app/books/android_books/app/src/main/java/dev/flutter/example/books/MainActivity.kt b/add_to_app/books/android_books/app/src/main/java/dev/flutter/example/books/MainActivity.kt index 57d429887..c81526bde 100644 --- a/add_to_app/books/android_books/app/src/main/java/dev/flutter/example/books/MainActivity.kt +++ b/add_to_app/books/android_books/app/src/main/java/dev/flutter/example/books/MainActivity.kt @@ -94,6 +94,9 @@ class MainActivity : AppCompatActivity() { book.summary = volumeInfoJson.get("description").asString book.publishDate = volumeInfoJson.get("publishedDate").asString book.pageCount = volumeInfoJson.get("pageCount").asLong + val thumbnail = Api.Thumbnail() + thumbnail.url = volumeInfoJson.getAsJsonObject("imageLinks").get("thumbnail").asString + book.thumbnail = thumbnail books.add(book) } catch (e: Exception) { println("Failed to parse book:") diff --git a/add_to_app/books/flutter_module_books/lib/main.dart b/add_to_app/books/flutter_module_books/lib/main.dart index 588eda016..b56b2a8a5 100644 --- a/add_to_app/books/flutter_module_books/lib/main.dart +++ b/add_to_app/books/flutter_module_books/lib/main.dart @@ -96,6 +96,9 @@ class _BookDetailState extends State { })); } + // Not overriding didUpdateWidget because the Android program can't change + // the book given to Flutter on the Android side. + void clear() { book = null; // Keep focus if going to the home screen but unfocus if leaving @@ -209,21 +212,29 @@ class BookForm extends StatelessWidget { ), const Divider(), const SizedBox(height: 32), - const Center( - child: Text( - 'BOOK DESCRIPTION', - style: TextStyle( - fontSize: 15, - fontWeight: FontWeight.bold, - decoration: TextDecoration.underline, + if (book.thumbnail?.url != null) ... [ + Center( + child: Image.network(book.thumbnail!.url!), + ), + const SizedBox(height: 32), + ], + if (book.summary != null) ... [ + const Center( + child: Text( + 'BOOK DESCRIPTION', + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.bold, + decoration: TextDecoration.underline, + ), ), ), - ), - const SizedBox(height: 12), - Text( - book.summary ?? '', - style: TextStyle(color: Colors.grey.shade600, height: 1.24), - ), + const SizedBox(height: 12), + Text( + book.summary ?? '', + style: TextStyle(color: Colors.grey.shade600, height: 1.24), + ), + ] ], ), ); diff --git a/add_to_app/books/ios_books/IosBooks.xcodeproj/project.pbxproj b/add_to_app/books/ios_books/IosBooks.xcodeproj/project.pbxproj index 45f955f78..cda644b78 100644 --- a/add_to_app/books/ios_books/IosBooks.xcodeproj/project.pbxproj +++ b/add_to_app/books/ios_books/IosBooks.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -113,7 +113,7 @@ 0DDE4C3325E0390700389930 /* Sources */, 0DDE4C3425E0390700389930 /* Frameworks */, 0DDE4C3525E0390700389930 /* Resources */, - F82F2089B06A5489DA98C8B9 /* [CP] Embed Pods Frameworks */, + CA4628050A0CDB5CBFD737AD /* [CP-User] Embed Flutter Build flutter_module_books Script */, ); buildRules = ( ); @@ -203,22 +203,15 @@ shellPath = /bin/sh; shellScript = "set -e\nset -u\nsource \"${SRCROOT}/../flutter_module_books/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh build"; }; - F82F2089B06A5489DA98C8B9 /* [CP] Embed Pods Frameworks */ = { + CA4628050A0CDB5CBFD737AD /* [CP-User] Embed Flutter Build flutter_module_books Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosBooks/Pods-IosBooks-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-IosBooks/Pods-IosBooks-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); + name = "[CP-User] Embed Flutter Build flutter_module_books Script"; runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-IosBooks/Pods-IosBooks-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "set -e\nset -u\nsource \"${SRCROOT}/../flutter_module_books/.ios/Flutter/flutter_export_environment.sh\"\nexport VERBOSE_SCRIPT_LOGGING=1 && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/xcode_backend.sh embed_and_thin"; }; /* End PBXShellScriptBuildPhase section */ @@ -381,6 +374,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = IosBooks/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -403,6 +397,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_MODULES = YES; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = IosBooks/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/add_to_app/books/ios_books/IosBooks.xcodeproj/xcshareddata/xcschemes/IosBooks.xcscheme b/add_to_app/books/ios_books/IosBooks.xcodeproj/xcshareddata/xcschemes/IosBooks.xcscheme new file mode 100644 index 000000000..98b9ae62a --- /dev/null +++ b/add_to_app/books/ios_books/IosBooks.xcodeproj/xcshareddata/xcschemes/IosBooks.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/add_to_app/books/ios_books/IosBooks/ViewController.swift b/add_to_app/books/ios_books/IosBooks/ViewController.swift index f28cf5f85..210ad76ef 100644 --- a/add_to_app/books/ios_books/IosBooks/ViewController.swift +++ b/add_to_app/books/ios_books/IosBooks/ViewController.swift @@ -47,7 +47,10 @@ class ViewController: UITableViewController, BKHostBookApi { let authors = (volumeInfo["authors"] as! [String]).joined(separator: " & ") let pageCount = volumeInfo["pageCount"] as! Int32 let publishedDate = volumeInfo["publishedDate"] as! String - let summary = volumeInfo["description"] as! String + let summary = volumeInfo["description"] as! String? + let imageLinks = volumeInfo["imageLinks"] as! [String: Any] + let thumbnail: BKThumbnail = BKThumbnail.init() + thumbnail.url = imageLinks["thumbnail"] as! String? let book: BKBook = BKBook.init() book.author = authors book.title = title @@ -56,6 +59,7 @@ class ViewController: UITableViewController, BKHostBookApi { book.pageCount = NSNumber.init(value: pageCount) book.publishDate = publishedDate book.summary = summary + book.thumbnail = thumbnail newBooks.append(book) } DispatchQueue.main.async {