[{"title":"( 93 个子文件 114KB ) flutter-grpc-tutorial:[教程]带有Go聊天服务器的异步Flutter聊天客户端,由gRPC提供支持(简单和流式传输)","children":[{"title":"flutter-grpc-tutorial-master","children":[{"title":"api","children":[{"title":"proto","children":[{"title":"v1","children":[{"title":"chat.proto <span style='color:#111;'> 515B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"third_party","children":[{"title":"protoc-gen.cmd <span style='color:#111;'> 658B </span>","children":null,"spread":false},{"title":"google","children":[{"title":"protobuf","children":[{"title":"wrappers.proto <span style='color:#111;'> 3.66KB </span>","children":null,"spread":false},{"title":"empty.proto <span style='color:#111;'> 2.37KB </span>","children":null,"spread":false},{"title":"timestamp.proto <span style='color:#111;'> 5.99KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"LICENSE <span style='color:#111;'> 11.09KB </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 269B </span>","children":null,"spread":false},{"title":"flutter-grpc-tutorial.code-workspace <span style='color:#111;'> 355B </span>","children":null,"spread":false},{"title":"go-server","children":[{"title":".gitignore <span style='color:#111;'> 199B </span>","children":null,"spread":false},{"title":"go.mod <span style='color:#111;'> 233B </span>","children":null,"spread":false},{"title":"pkg","children":[{"title":"api","children":[{"title":"v1","children":[{"title":"chat.pb.go <span style='color:#111;'> 7.33KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"service","children":[{"title":"v1","children":[{"title":"chat.go <span style='color:#111;'> 1.32KB </span>","children":null,"spread":false}],"spread":true}],"spread":true},{"title":"protocol","children":[{"title":"grpc","children":[{"title":"server.go <span style='color:#111;'> 542B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":".vscode","children":[{"title":"launch.json <span style='color:#111;'> 505B </span>","children":null,"spread":false}],"spread":true},{"title":"cmd","children":[{"title":"server","children":[{"title":"main.go <span style='color:#111;'> 359B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"flutter_client","children":[{"title":".gitignore <span style='color:#111;'> 1.26KB </span>","children":null,"spread":false},{"title":"pubspec.yaml <span style='color:#111;'> 2.36KB </span>","children":null,"spread":false},{"title":"android","children":[{"title":"app","children":[{"title":"build.gradle <span style='color:#111;'> 1.83KB </span>","children":null,"spread":false},{"title":"src","children":[{"title":"main","children":[{"title":"AndroidManifest.xml <span style='color:#111;'> 1.95KB </span>","children":null,"spread":false},{"title":"res","children":[{"title":"mipmap-xhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 721B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-mdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 442B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 1.01KB </span>","children":null,"spread":false}],"spread":false},{"title":"drawable","children":[{"title":"launch_background.xml <span style='color:#111;'> 434B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-hdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 544B </span>","children":null,"spread":false}],"spread":false},{"title":"mipmap-xxxhdpi","children":[{"title":"ic_launcher.png <span style='color:#111;'> 1.41KB </span>","children":null,"spread":false}],"spread":false},{"title":"values","children":[{"title":"styles.xml <span style='color:#111;'> 361B </span>","children":null,"spread":false}],"spread":false}],"spread":false},{"title":"java","children":[{"title":"com","children":[{"title":"example","children":[{"title":"flutterclient","children":[{"title":"MainActivity.java <span style='color:#111;'> 370B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true},{"title":"settings.gradle <span style='color:#111;'> 484B </span>","children":null,"spread":false},{"title":"build.gradle <span style='color:#111;'> 470B </span>","children":null,"spread":false},{"title":"gradle.properties <span style='color:#111;'> 29B </span>","children":null,"spread":false},{"title":"gradle","children":[{"title":"wrapper","children":[{"title":"gradle-wrapper.properties <span style='color:#111;'> 234B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true},{"title":"ios","children":[{"title":"Runner.xcodeproj","children":[{"title":"xcshareddata","children":[{"title":"xcschemes","children":[{"title":"Runner.xcscheme <span style='color:#111;'> 3.25KB </span>","children":null,"spread":false}],"spread":false}],"spread":true},{"title":"project.xcworkspace","children":[{"title":"contents.xcworkspacedata <span style='color:#111;'> 152B </span>","children":null,"spread":false}],"spread":false},{"title":"project.pbxproj <span style='color:#111;'> 20.66KB </span>","children":null,"spread":false}],"spread":true},{"title":"Flutter","children":[{"title":"Release.xcconfig <span style='color:#111;'> 30B </span>","children":null,"spread":false},{"title":"AppFrameworkInfo.plist <span style='color:#111;'> 773B </span>","children":null,"spread":false},{"title":"Debug.xcconfig <span style='color:#111;'> 30B </span>","children":null,"spread":false}],"spread":true},{"title":"Runner","children":[{"title":"main.m <span style='color:#111;'> 226B </span>","children":null,"spread":false},{"title":"AppDelegate.h <span style='color:#111;'> 103B </span>","children":null,"spread":false},{"title":"Info.plist <span style='color:#111;'> 1.48KB </span>","children":null,"spread":false},{"title":"AppDelegate.m <span style='color:#111;'> 424B </span>","children":null,"spread":false},{"title":"Base.lproj","children":[{"title":"LaunchScreen.storyboard <span style='color:#111;'> 2.32KB </span>","children":null,"spread":false},{"title":"Main.storyboard <span style='color:#111;'> 1.57KB </span>","children":null,"spread":false}],"spread":false},{"title":"Assets.xcassets","children":[{"title":"AppIcon.appiconset","children":[{"title":"Icon-App-40x40@3x.png <span style='color:#111;'> 2.60KB </span>","children":null,"spread":false},{"title":"Icon-App-29x29@3x.png <span style='color:#111;'> 1.88KB </span>","children":null,"spread":false},{"title":"Icon-App-40x40@1x.png <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"Icon-App-29x29@1x.png <span style='color:#111;'> 1.00KB </span>","children":null,"spread":false},{"title":"Icon-App-20x20@1x.png <span style='color:#111;'> 564B </span>","children":null,"spread":false},{"title":"Icon-App-76x76@1x.png <span style='color:#111;'> 1.84KB </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 2.46KB </span>","children":null,"spread":false},{"title":"Icon-App-60x60@2x.png <span style='color:#111;'> 2.60KB </span>","children":null,"spread":false},{"title":"Icon-App-29x29@2x.png <span style='color:#111;'> 1.68KB </span>","children":null,"spread":false},{"title":"Icon-App-1024x1024@1x.png <span style='color:#111;'> 10.85KB </span>","children":null,"spread":false},{"title":"Icon-App-40x40@2x.png <span style='color:#111;'> 1.85KB </span>","children":null,"spread":false},{"title":"Icon-App-76x76@2x.png <span style='color:#111;'> 3.22KB </span>","children":null,"spread":false},{"title":"Icon-App-20x20@2x.png <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"Icon-App-60x60@3x.png <span style='color:#111;'> 3.74KB </span>","children":null,"spread":false},{"title":"Icon-App-20x20@3x.png <span style='color:#111;'> 1.55KB </span>","children":null,"spread":false},{"title":"Icon-App-83.5x83.5@2x.png <span style='color:#111;'> 3.53KB </span>","children":null,"spread":false}],"spread":false},{"title":"LaunchImage.imageset","children":[{"title":"LaunchImage@2x.png <span style='color:#111;'> 68B </span>","children":null,"spread":false},{"title":"LaunchImage.png <span style='color:#111;'> 68B </span>","children":null,"spread":false},{"title":"LaunchImage@3x.png <span style='color:#111;'> 68B </span>","children":null,"spread":false},{"title":"Contents.json <span style='color:#111;'> 391B </span>","children":null,"spread":false},{"title":"README.md <span style='color:#111;'> 336B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"Runner.xcworkspace","children":[{"title":"contents.xcworkspacedata <span style='color:#111;'> 152B </span>","children":null,"spread":false}],"spread":false}],"spread":true},{"title":"README.md <span style='color:#111;'> 543B </span>","children":null,"spread":false},{"title":".metadata <span style='color:#111;'> 305B </span>","children":null,"spread":false},{"title":"lib","children":[{"title":"api","children":[{"title":"v1","children":[{"title":"chat.pbjson.dart <span style='color:#111;'> 282B </span>","children":null,"spread":false},{"title":"chat.pbgrpc.dart <span style='color:#111;'> 2.39KB </span>","children":null,"spread":false},{"title":"chat.pb.dart <span style='color:#111;'> 1.47KB </span>","children":null,"spread":false},{"title":"chat.pbenum.dart <span style='color:#111;'> 148B </span>","children":null,"spread":false},{"title":"google","children":[{"title":"protobuf","children":[{"title":"wrappers.pbjson.dart <span style='color:#111;'> 1.40KB </span>","children":null,"spread":false},{"title":"timestamp.pb.dart <span style='color:#111;'> 1.76KB </span>","children":null,"spread":false},{"title":"empty.pbjson.dart <span style='color:#111;'> 196B </span>","children":null,"spread":false},{"title":"wrappers.pb.dart <span style='color:#111;'> 11.77KB </span>","children":null,"spread":false},{"title":"empty.pb.dart <span style='color:#111;'> 1.28KB </span>","children":null,"spread":false},{"title":"empty.pbenum.dart <span style='color:#111;'> 149B </span>","children":null,"spread":false},{"title":"wrappers.pbenum.dart <span style='color:#111;'> 152B </span>","children":null,"spread":false},{"title":"timestamp.pbjson.dart <span style='color:#111;'> 362B </span>","children":null,"spread":false},{"title":"timestamp.pbenum.dart <span style='color:#111;'> 153B </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":false},{"title":"chat_service.dart <span style='color:#111;'> 6.02KB </span>","children":null,"spread":false}],"spread":false},{"title":"theme.dart <span style='color:#111;'> 485B </span>","children":null,"spread":false},{"title":"models","children":[{"title":"message.dart <span style='color:#111;'> 368B </span>","children":null,"spread":false},{"title":"message_outgoing.dart <span style='color:#111;'> 843B </span>","children":null,"spread":false},{"title":"message_incoming.dart <span style='color:#111;'> 384B </span>","children":null,"spread":false}],"spread":false},{"title":"blocs","children":[{"title":"application_bloc.dart <span style='color:#111;'> 3.84KB </span>","children":null,"spread":false},{"title":"bloc_provider.dart <span style='color:#111;'> 1.25KB </span>","children":null,"spread":false},{"title":"message_events.dart <span style='color:#111;'> 873B </span>","children":null,"spread":false}],"spread":false},{"title":"pages","children":[{"title":"home.dart <span style='color:#111;'> 8.14KB </span>","children":null,"spread":false}],"spread":false},{"title":"main.dart <span style='color:#111;'> 2.87KB </span>","children":null,"spread":false},{"title":"widgets","children":[{"title":"chat_message.dart <span style='color:#111;'> 364B </span>","children":null,"spread":false},{"title":"chat_message_incoming.dart <span style='color:#111;'> 1.68KB </span>","children":null,"spread":false},{"title":"chat_message_outgoing.dart <span style='color:#111;'> 2.09KB </span>","children":null,"spread":false}],"spread":false}],"spread":false}],"spread":true}],"spread":true}],"spread":true}]