Как устранить ошибки переполнения - PullRequest
0 голосов
/ 09 июля 2020

Я искал это в Интернете и даже пытался решить проблему переполнения через SingleChildScrollView. Но, к сожалению, это не работает. Он постоянно выдает ошибку и говорит, что кнопка входа в Google вышла за пределы 154 пикселя вправо. Какое для этого лучшее решение? Я ценю всех, кто пытается помочь любым способом. Я немного новичок во Flutter.

import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/rendering.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';

void main() {
  runApp(LandingPage());
}

class LandingPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // This takes you to Google Login Button stateful widget
      home: GoogleLoginBtn()
    );
  }
}


final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;


Future<FirebaseUser> _handleSignIn() async {
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
  print("signed in " + user.displayName);
  return user;
}


// Just created a stateful widget
// This represents a login button
class GoogleLoginBtn extends StatefulWidget {
  @override
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<GoogleLoginBtn> {

  FirebaseUser user;
  @override
  Widget build(BuildContext context) {
    return  Scaffold(
        backgroundColor: Colors.white10,
        body: Container(
          padding: EdgeInsets.all(166),
          child: SingleChildScrollView(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Text('ProtoX',
                  style: TextStyle(color: Colors.white, fontSize: 20),
                  textAlign: TextAlign.center,
                ),
                SizedBox(
                  height: 360,
                  width: 360,
                ),
               GoogleSignInButton(
                 onPressed: () {
                   _handleSignIn()
                       .then((FirebaseUser user) => print(user))
                       .catchError((e) => print(e));
                    // Transition to Homepage page

                 },
               ),
              ],
            ),
          ),
        )
    );
  }
}

1 Ответ

0 голосов
/ 09 июля 2020

EdgeInsets.all(166), 166 могло быть опечаткой. вы можете изменить на 16

рабочая демонстрация

введите описание изображения здесь

полный код

import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/rendering.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_auth_buttons/flutter_auth_buttons.dart';

void main() {
  runApp(LandingPage());
}

class LandingPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        // This takes you to Google Login Button stateful widget
        home: GoogleLoginBtn());
  }
}

final GoogleSignIn _googleSignIn = GoogleSignIn();
final FirebaseAuth _auth = FirebaseAuth.instance;

Future<FirebaseUser> _handleSignIn() async {
  final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
  final GoogleSignInAuthentication googleAuth = await googleUser.authentication;

  final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

  final FirebaseUser user = (await _auth.signInWithCredential(credential)).user;
  print("signed in " + user.displayName);
  return user;
}

// Just created a stateful widget
// This represents a login button
class GoogleLoginBtn extends StatefulWidget {
  @override
  _LoginState createState() => _LoginState();
}

class _LoginState extends State<GoogleLoginBtn> {
  FirebaseUser user;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white10,
        body: Container(
          padding: EdgeInsets.all(16),
          child: SingleChildScrollView(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Text(
                  'ProtoX',
                  style: TextStyle(color: Colors.white, fontSize: 20),
                  textAlign: TextAlign.center,
                ),
                SizedBox(
                  height: 360,
                  width: 360,
                ),
                GoogleSignInButton(
                  onPressed: () {
                    _handleSignIn()
                        .then((FirebaseUser user) => print(user))
                        .catchError((e) => print(e));
                    // Transition to Homepage page
                  },
                ),
              ],
            ),
          ),
        ));
  }
}
...