// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import 'package:flutter/material.dart'; import 'package:github/github.dart'; import 'github_oauth_credentials.dart'; import 'src/github_login.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'GitHub Client', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), visualDensity: VisualDensity.adaptivePlatformDensity, ), home: const MyHomePage(title: 'GitHub Client'), ); } } class MyHomePage extends StatelessWidget { const MyHomePage({super.key, required this.title}); final String title; @override Widget build(BuildContext context) { return GithubLoginWidget( builder: (context, httpClient) { return FutureBuilder( future: viewerDetail(httpClient.credentials.accessToken), builder: (context, snapshot) { return Scaffold( appBar: AppBar(title: Text(title), elevation: 2), body: Center( child: Text( snapshot.hasData ? 'Hello ${snapshot.data!.login}!' : 'Retrieving viewer login details...', ), ), ); }, ); }, githubClientId: githubClientId, githubClientSecret: githubClientSecret, githubScopes: githubScopes, ); } } Future viewerDetail(String accessToken) async { final gitHub = GitHub(auth: Authentication.withToken(accessToken)); return gitHub.users.getCurrentUser(); }