Приложение не работает на Android [Соединение отклонено (Ошибка ОС: Соединение отклонено, ошибка = 111)] адрес = localhoAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Приложение не работает на Android [Соединение отклонено (Ошибка ОС: Соединение отклонено, ошибка = 111)] адрес = localho

Сообщение Anonymous »

Я пытаюсь написать приложение с простой функцией входа/регистрации, используя flutter и nodejs.
В почтальоне оно может отправить запрос. Я запускаю его в Chrome, и он работает отлично, но не работает в эмуляторе Android (и на физическом устройстве).
Потом я обнаружил, что мне нужно внести изменения на локальном хосте, но не не знаю что...
Возможно, это вопрос для новичков

Код: Выделить всё

main.dart:
import 'package:flutter/material.dart';
import 'package:frontend/signin.dart';

void main() {
runApp(MaterialApp(
debugShowCheckedModeBanner: false,
home: Signin(),
));
}
signin.dart

Код: Выделить всё

import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:frontend/dashboard.dart';
import 'package:frontend/signup.dart';
import 'package:frontend/user.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:http/http.dart' as http;

class Signin extends StatefulWidget {
Signin({Key? key}) : super(key: key);

@override
State createState() => _SigninState();
}

class _SigninState extends State {
final _formKey = GlobalKey();
Future save() async {
var res = await http.post(
"http://localhost:8080/signin",
// "http://10.0.2.2/signin",
headers: {
"Context-Type": 'application.json;charSet=UTF-8'
},
body: {
'email': user.email,
'password': user.password,
},
);
print(res.body);
Navigator.push(
context,
new MaterialPageRoute(builder: (context) =>  Dashboard()),
);
}

User user = User('', '');
@override
Widget build(BuildContext context) {
return Scaffold(
body: SingleChildScrollView(
child: Stack(

children: [
Positioned(
top: 0,
child: SvgPicture.asset(
'images/top.svg',
width: 400,
height: 150,
)),
Container(
alignment: Alignment.center,
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
const SizedBox(
height: 150,
),
Text(
'Signin',
style: GoogleFonts.pacifico(
fontWeight: FontWeight.bold,
fontSize: 50,
color: Colors.blue,
),
),
const SizedBox(
height: 25,
),
Padding(
padding: const EdgeInsets.all(16.0),
child: TextFormField(
controller: TextEditingController(text: user.email),
onChanged: (value) {
user.email = value;
},
validator: (value) {
if (value!.isEmpty) {
return 'Enter Something';
} else if (RegExp(
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9]+\.[a-zA-Z]+")
.hasMatch(value)) {
return null;
} else {
return 'Enter Valid Email';
}
},
decoration: InputDecoration(
hintText: "Enter Email",
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.blue),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.blue),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.red),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.red),
),
),
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: TextFormField(
controller: TextEditingController(text: user.email),
onChanged: (value) {
user.email = value;
},
validator: (value) {
if (value!.isEmpty) {
return 'Enter Something';
}
return null;
},
decoration: InputDecoration(
hintText: "Enter Password",
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.blue),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.blue),
),
errorBorder:  OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.red),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(50),
borderSide: const BorderSide(color: Colors.red),
),
),
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: Container(
height: 50,
width: 400,
child: FlatButton(
color: Colors.blue,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16.0)),
onPressed: () {
if (_formKey.currentState!.validate()) {
save();
} else {
print("NOT OK");
}
},
child: const Text(
"SIGNIN",
style: TextStyle(color: Colors.white),
),
),
),
),
Padding(
padding: const EdgeInsets.fromLTRB(65, 20, 0, 0),
child: Row(
children: [
const Text(
"not have account ? ",
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
),
),
InkWell(
onTap: () {
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => Signup()));
},
child: const Text(
"Signup",
style: TextStyle(
color: Colors.blue,
fontWeight: FontWeight.bold,
),
),
),
],
)),
],
),
),
)
],
),
),
);
}
}

user.dart

Код: Выделить всё

class User {
String email;
String password;
User(this.email, this.password);
}
index.js

Код: Выделить всё

const express = require("express");
const app = express();
const port = 8080 || process.env.PORT;
const cors = require("cors");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");

mongoose.connect("mongodb://localhost:27017/mydb", {
// mongoose.connect("mongodb://10.0.2.2:27017/mydb", {
useNewUrlParser: true,
useUnifiedTopology: true,
});

app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use("/", require("./routes/user.route"));

app.listen(port, () => {
console.log("port is running on " + port);
});
спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/730 ... on-refused
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»