Files
nowser/lib/router/web_url_input/web_url_input_router.dart
2024-09-06 01:15:56 +08:00

97 lines
2.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:nowser/util/router_util.dart';
import '../../const/base.dart';
class WebUrlInputRouter extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _WebUrlInputRouter();
}
}
class _WebUrlInputRouter extends State<WebUrlInputRouter> {
TextEditingController textEditingController = TextEditingController();
String? url;
late FocusNode focusNode;
@override
void initState() {
super.initState();
focusNode = FocusNode();
Future.delayed(const Duration(milliseconds: 350), () {
focusNode.requestFocus();
});
}
@override
void dispose() {
focusNode.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
if (url == null) {
var arg = RouterUtil.routerArgs(context);
if (arg != null && arg is String) {
url = arg;
textEditingController.text = arg;
}
}
List<Widget> list = [];
var inputWidget = Hero(
tag: "urlInput",
child: Material(
child: TextField(
controller: textEditingController,
decoration: const InputDecoration(border: OutlineInputBorder()),
focusNode: focusNode,
onSubmitted: (value) {
RouterUtil.back(context, value);
},
),
),
);
list.add(Expanded(child: Container()));
list.add(Container(
padding: const EdgeInsets.all(Base.BASE_PADDING),
child: Row(
children: [
GestureDetector(
onTap: () {
RouterUtil.back(context);
},
behavior: HitTestBehavior.translucent,
child: Container(
padding: EdgeInsets.only(right: Base.BASE_PADDING),
child: Icon(Icons.chevron_left),
),
),
Expanded(child: inputWidget),
GestureDetector(
behavior: HitTestBehavior.translucent,
child: Container(
padding: EdgeInsets.only(left: Base.BASE_PADDING),
child: Icon(Icons.qr_code_scanner),
),
),
],
),
));
return Scaffold(
body: Container(
child: Column(
children: list,
),
),
);
}
}