Flu*_*Dev 8 layout text dart flutter
我的内容很长,当用户进入我的页面时,默认情况下需要显示滚动条。
当前,直到用户单击文本,才显示这些条,这不是很好的行为,因为用户可以离开页面而不会注意到有一些未读文本。
我的代码:
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(15.0),
child: Center(
child: Column(
children: <Widget>[
Image.asset(
"assets/images/logo.png",
height: 200.0,
),
SizedBox(
height: 40,
),
Expanded(
child: Scrollbar(
child: SingleChildScrollView(
child: Text("Long Text Here ...",
textDirection: TextDirection.rtl,
style: TextStyle(fontSize: 17.2),
),
),
),
),
SizedBox(
height: 50,
),
Row(
children: <Widget>[
Expanded(
child: RaisedButton(
child: Text("Continue"),
onPressed: () {
MaterialPageRoute route = MaterialPageRoute(
builder: (BuildContext context) => MainPage());
Navigator.of(context).push(route);
},
),
),
SizedBox(
width: 20.0,
),
RaisedButton(
child: Text("Close"),
onPressed: () {
exit(0);
},
),
],
)
],
),
),
),
);
}```
Run Code Online (Sandbox Code Playgroud)
小智 30
从 Flutter 1.17 版开始,Scrollbar您可以设置isAlwaysShown为true,但您必须controller为您的Scrollbar和您的SingleChildScrollView(这也适用于任何其他可滚动小部件)设置相同的值。
请记住,要使Scrollbar可见,必须有足够的项目可以滚动。如果没有,Scrollbar则不会显示。
完整的工作示例:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: MyWidget(),
),
);
}
}
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
final _scrollController = ScrollController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.all(15.0),
child: Center(
child: Column(
children: <Widget>[
// ...
Expanded(
child: Scrollbar(
controller: _scrollController, // <---- Here, the controller
isAlwaysShown: true, // <---- Required
child: SingleChildScrollView(
controller: _scrollController, // <---- Same as the Scrollbar controller
child: Text(
"Long Text Here ...",
textDirection: TextDirection.rtl,
style: TextStyle(fontSize: 17.2),
),
),
),
),
// ...
],
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
jay*_*yjw 19
从 v2.9.0-1.0 开始,thumbVisiblity是需要设置的正确字段。
请注意,您可以使用ScrollbarTheme为您的应用程序(或某个子树)全局设置此值:
return MaterialApp(
...
theme: ThemeData(
...
scrollbarTheme: ScrollbarThemeData(
thumbVisibility: MaterialStateProperty.all<bool>(true),
)
)
)
Run Code Online (Sandbox Code Playgroud)
最好选择像这样的样式主题,因此避免多次这样做。
不过,您仍然需要添加滚动条和控制器,如其他答案中所述。
使用draggable_scrollbar包。它提供了一个可拖动的滚动条,并带有使滚动条始终可见的选项。例如,您可以使用以下代码
DraggableScrollbar.arrows(
alwaysVisibleScrollThumb: true, //use this to make scroll thumb always visible
labelTextBuilder: (double offset) => Text("${offset ~/ 100}"),
controller: myScrollController,
child: ListView.builder(
controller: myScrollController,
itemCount: 1000,
itemExtent: 100.0,
itemBuilder: (context, index) {
return Container(
padding: EdgeInsets.all(8.0),
child: Material(
elevation: 4.0,
borderRadius: BorderRadius.circular(4.0),
color: Colors.purple[index % 9 * 100],
child: Center(
child: Text(index.toString()),
),
),
);
},
),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1296 次 |
| 最近记录: |