我想在螢屏上顯示我的代碼底部的padding部分,延遲10秒。我怎樣才能做到呢?
我的代碼 :
import 'dart:convert';
import 'dart:io';
import 'package:flutter/material.dart'。
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_clipboard_manager/flutter_clipboard_manager.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(const MyApp())。
}
class MyApp extends StatelessWidget{
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
標題。'URL Shortener'。
主題。ThemeData(
primarySwatch: Colors.紫色。
),
首頁。StartPage()。
);
}
}
class StartPage extends StatefulWidget{
@override
_StartPageState createState() => _StartPageState()。
}
class _StartPageState extends State< StartPage> {
bool visibilityTag = false;
void _changed(bool visibility, String field) {
setState(() {
if (field == "tag"/span>) {
visibilityTag = visibility。
}
});
}
final GlobalKey<ScaffoldState> _globalKey = GlobalKey<ScaffoldState> ();
String shortUrl = ""/span>;
String value = "";
String buttonText = "復制!"。
bool isChanged = true。
TextEditingController urlcontroller = TextEditingController();
getData() async {
var url = 'https://api.shrtco.de/v2/shorten?url=${urlcontroller.text}'/span>;
var response = await http.get(url)。
var result = jsonDecode(response.body)。
if (result['ok']) {
setState(() {
shortUrl = result['result']['short_link'] 。
});
} else {
print(response)。
}
}
copy(String url) {
FlutterClipboardManager.copyToClipBoard(url).then((value) {})。
}
buildRow(String data, bool original) {
return SingleChildScrollView(
child: original
? 容器(
對齊。Alignment.center,
孩子。文本(
資料。
))
: 列(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
兒童。[
文本(
資料。
),
提升的按鈕(
孩子。Text(buttonText),
風格。ElevatedButton.styleFrom(
primary: Colors.blue,
形狀。RoundedRectangleBorder(
borderRadius: borderRadius.round(10.0))。
最小尺寸。Size(300, 40)。
),
onPressed: () {
copy(shortUrl);
setState(() {
if (isChanged == true) {
buttonText = "COPIED!"。
}
});
},
),
],
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.gray[300] 。
體。ListView(
兒童。[
SvgPicture.asset(
'assets/logo.svg'。
),
SvgPicture.asset(
'assets/illustration.svg',
),
中心(
孩子。Text(
"讓我們開始吧!"。
風格。TextStyle(
字體大小。20。
color: Color.fromRGBO(53, 50, 62, 10) 。
fontWeight: FontWeight.bold)。)
),
),
中心(
孩子。SizedBox(
width: 200,
高度。60。
孩子。Padding(
padding: const EdgeInsets.all(8.0)。
孩子。文本(
"將你的第一個鏈接粘貼到該欄位中以縮短它"。
textAlign: TextAlign.center,
style: 文本風格(
字體大小。15。
color: Color.fromRGBO(76, 74, 85, 10) 。
fontWeight: FontWeight.bold))。
),
),
),
SizedBox(
高度。130。
孩子。堆疊(
對齊。Alignment.center,
children: [
容器(
對齊。Alignment.centerRight,
color: Color.fromRGBO(59, 48, 84, 1) 。
孩子。SvgPicture.asset(
'assets/shape.svg'。
color: Color.fromRGBO(75, 63, 107, 1) 。
),
),
列(
mainAxisAlignment: MainAxisAlignment.center,
兒童。[
SizedBox(
width: 300,
高度。40。
孩子。TextField(
onChanged: (text) {
value = "URL : "/span> text;
},
controller: urlcontroller,
textAlign: TextAlign.center,
裝飾。InputDecoration(
contentPadding: EdgeInsets.all(10.0)。
邊界。OutlineInputBorder(
borderRadius: const BorderRadius.all(
const Radius.round(10.0)。
),
borderSide: borderSide(
width: 0,
風格。borderStyle.none,
),
),
fillColor: Colors.white,
填充。true。
hintText: 'Shorten a link here ...')。
),
),
SizedBox(
高度。10。
),
大小盒(
width: 300,
孩子。ElevatedButton(
onPressed: getData,
樣式。ElevatedButton.styleFrom(
primary: Colors.blue,
形狀。RoundedRectangleBorder(
borderRadius: borderRadius.round(10.0))。
最小尺寸。Size(60, 40) 。
),
孩子。Text('SHORTEN IT!')。
),
),
],
),
],
),
),
填充(
padding: const EdgeInsets.all(13.0) 。
孩子。容器(
color: Colors.white,
width: double.infinity,
孩子。列(
兒童。[
SizedBox(
高度。10,
),
buildRow(value, true)。
buildRow(shortUrl, false)。
],
),
),
)
],
),
);
}
}
你好,我想在螢屏上顯示我代碼底部的padding部分,延遲10秒。我怎樣才能做到這一點? 你好,我想在螢屏上顯示我的代碼底部的padding部分,并延遲10秒。我怎樣才能做到呢? 你好,我想在螢屏上顯示我的代碼底部的padding部分,延遲10秒。我怎樣才能做到呢?你好,我想在螢屏上顯示我的代碼底部的padding部分,延遲10秒。我怎樣才能做到呢?
uj5u.com熱心網友回復:
在State上創建一個bool,如
bool showCopyButton = false;/code>
在
改變為true SizedBox(
width: 300,
孩子。ElevatedButton(
onPressed: ()async {
print("Button Click"/span>)。
await getData();
setState(() {
showCopyButton = true;
});
},
樣式。ElevatedButton.styleFrom(
primary: Colors.blue,
形狀。RoundedRectangleBorder(
borderRadius: borderRadius.round(10.0))。
最小尺寸。Size(60, 40) 。
),
孩子。Text('SHORTEN IT!')。
),
),
然后用可見性包裝,比如
Visibility(
visible: showCopyButton,
孩子。Padding(
padding: const EdgeInsets.all(13.0) 。
孩子。容器(
color: Colors.white,
width: double.infinity,
孩子。列(
兒童。[
SizedBox(
高度。10,
),
buildRow("Text", true) 。
buildRow("asdad", false) 。
],
),
),
),
)
或者你可以直接if,如
if (showCopyButton)
padding(
padding: const EdgeInsets.all(13.0)。
孩子。容器(
color: Colors.white,
width: double.infinity,
孩子。列(
兒童。[
SizedBox(
高度。10,
),
buildRow("Text", true) 。
buildRow("asdad", false) 。
],
),
),
),
Btw你需要在使其為真之前使用 await。
uj5u.com熱心網友回復:
希望這有幫助:
import 'package:flutter/material.dart';
class Screen extends StatefulWidget {
@override
_ScreenState createState() => _ScreenState();
}
class _ScreenState extends State < Screen> {
bool _paddingVisible = false;
@override
void initState() {
super.initState()。
Future.delayed(const Duration(second: 10), () {
//檢查是否安裝==true,因為螢屏可能關閉。
//在10秒過去之前。
if ( mounted) {
//在10秒后設定padding的可見性為true
setState(() {
_paddingVisible = true;
});
}
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
兒童。[
//你的所有部件
///當_paddingVisible變為true時,它將被顯示。
if (_paddingVisible) SizedBox(高度: 10)。
],
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/320717.html
標籤:
上一篇:如何使用JetpackNavigation組件從BottomSheetDialogFragment導航到另一個Fragment?
