Fix snackbar in host/join dialog #9
@ -1,5 +1,6 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
@ -91,7 +92,11 @@ class _LobbySelectorState extends State<LobbySelector> {
|
||||
return showDialog<void>(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
return ScaffoldMessenger(
|
||||
child: Builder(builder: (builderContext) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: AlertDialog(
|
||||
title: const Text('Enter the passphrase here:'),
|
||||
content: TextField(
|
||||
controller: phraseController,
|
||||
@ -99,11 +104,11 @@ class _LobbySelectorState extends State<LobbySelector> {
|
||||
hintText: 'Enter passphrase here',
|
||||
suffixIcon: IconButton(
|
||||
onPressed: () {
|
||||
joinGameFuture = joinPrivateGame();
|
||||
joinGameFuture = joinPrivateGame(builderContext);
|
||||
joinGameFuture.then((value) {
|
||||
if (value != null) {
|
||||
phraseController.clear();
|
||||
context.pop();
|
||||
builderContext.pop();
|
||||
switchToGame(value);
|
||||
}
|
||||
});
|
||||
@ -115,10 +120,13 @@ class _LobbySelectorState extends State<LobbySelector> {
|
||||
TextButton(
|
||||
child: const Text('Cancel'),
|
||||
onPressed: () {
|
||||
context.pop();
|
||||
builderContext.pop();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
@ -144,12 +152,14 @@ class _LobbySelectorState extends State<LobbySelector> {
|
||||
);
|
||||
ScaffoldMessenger.of(context).clearSnackBars();
|
||||
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
context.goNamed('game', extra: chessGameArgs);
|
||||
}
|
||||
|
||||
Future<PlayerInfo?> joinPrivateGame() async {
|
||||
Future<PlayerInfo?> joinPrivateGame(BuildContext context) async {
|
||||
http.Response response;
|
||||
|
||||
// server expects us to send the passphrase
|
||||
@ -168,14 +178,25 @@ class _LobbySelectorState extends State<LobbySelector> {
|
||||
backgroundColor: Colors.amberAccent,
|
||||
content: Text("mChess server is not responding. Try again or give up"),
|
||||
);
|
||||
if (mounted) {
|
||||
ScaffoldMessenger.of(context).clearSnackBars();
|
||||
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
if (response.statusCode == 200) {
|
||||
if (response.statusCode == HttpStatus.notFound) {
|
||||
const snackBar = SnackBar(
|
||||
backgroundColor: Colors.amberAccent,
|
||||
content: Text("Passphrase could not be found."),
|
||||
);
|
||||
|
||||
if (!context.mounted) return null;
|
||||
|
||||
ScaffoldMessenger.of(context).clearSnackBars();
|
||||
ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||||
return null;
|
||||
}
|
||||
|
||||
if (response.statusCode == HttpStatus.ok) {
|
||||
var info = PlayerInfo.fromJson(jsonDecode(response.body));
|
||||
log('Player info received from server: ');
|
||||
log('lobbyID: ${info.lobbyID}');
|
||||
|
@ -1,12 +1,12 @@
|
||||
const prodURL = 'chess.sw-gross.de:9999';
|
||||
const debugURL = 'localhost:8080';
|
||||
|
||||
const dbgUrl = false;
|
||||
const useDbgUrl = false;
|
||||
|
||||
String getHostURL() {
|
||||
var prot = 'https';
|
||||
var domain = prodURL;
|
||||
if (dbgUrl) {
|
||||
if (useDbgUrl) {
|
||||
prot = 'http';
|
||||
domain = debugURL;
|
||||
}
|
||||
@ -16,7 +16,7 @@ String getHostURL() {
|
||||
String getJoinURL() {
|
||||
var prot = 'https';
|
||||
var domain = prodURL;
|
||||
if (dbgUrl) {
|
||||
if (useDbgUrl) {
|
||||
prot = 'http';
|
||||
domain = debugURL;
|
||||
}
|
||||
@ -26,7 +26,7 @@ String getJoinURL() {
|
||||
String getWebsocketURL() {
|
||||
var prot = 'wss';
|
||||
var domain = prodURL;
|
||||
if (dbgUrl) {
|
||||
if (useDbgUrl) {
|
||||
prot = 'ws';
|
||||
domain = debugURL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user