Anonymous
Приложение не работает на Android [Соединение отклонено (Ошибка ОС: Соединение отклонено, ошибка = 111)] адрес = localho
Сообщение
Anonymous » 29 ноя 2024, 13:27
Я пытаюсь написать приложение с простой функцией входа/регистрации, используя 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
1732876025
Anonymous
Я пытаюсь написать приложение с простой функцией входа/регистрации, используя flutter и nodejs. В почтальоне оно может отправить запрос. Я запускаю его в Chrome, и он работает отлично, но не работает в эмуляторе Android (и на физическом устройстве). Потом я обнаружил, что мне нужно внести изменения на локальном хосте, но не не знаю что... Возможно, это вопрос для новичков [code]main.dart: import 'package:flutter/material.dart'; import 'package:frontend/signin.dart'; void main() { runApp(MaterialApp( debugShowCheckedModeBanner: false, home: Signin(), )); } [/code] signin.dart [code]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, ), ), ), ], )), ], ), ), ) ], ), ), ); } } [/code] user.dart [code]class User { String email; String password; User(this.email, this.password); } [/code] index.js [code]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); }); [/code] спасибо :) Подробнее здесь: [url]https://stackoverflow.com/questions/73025431/app-is-not-working-on-android-connection-refused-os-error-connection-refused[/url]