#flutter
#flutter
Вопрос:
У меня есть две кнопки переключения внутри столбца, я бы хотел, чтобы вторая кнопка переключения выровнялась по левому краю с первыми кнопками переключения, это работает, если все кнопки имеют одинаковый размер текста, вот код, и вы можете видеть изображение, на котором вторая кнопка переключения имеет больше пробелов слева, есть идеи, какрешить эту проблему? вот код:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
const MyApp({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(home: SampleStateless());
}
}
class SampleStateless extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('sample')),
body: mybody(),
);
}
Widget mybody() {
return Column(
children: [
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: Text("Unicode Character Set:"),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: ToggleButtons(
isSelected: [false, true],
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 1 '),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 2'),
)
],
),
),
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: Text("Show ABCD Wrting As ::"),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: ToggleButtons(
isSelected: [false, true],
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 1 '),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' ABC '),
)
],
),
),
],
);
}
}
Комментарии:
1. ` mainAxisAlignment: MainAxisAlignment.start`, используйте это в столбце, будет перемещать всех дочерних элементов влево
2. спасибо за быстрый ответ, я добавил mainAxisALignment, кажется, он все еще не выровнен должным образом, вот обновленная суть: gist.github.com/sqllyw/863b30edd7bc28decaaf9ac210fc2d1c
3. я запускаю ваш виджет. вы хотите, чтобы они были равны по ширине, верно?
4. я хочу, чтобы кнопка ‘sample1’ во второй строке была выровнена по левому краю с ‘sample1’ в первой, вот неправильное изображение: gist.github.com/sqllyw /…
5. вы помещаете первую кнопку переключения внутри дополнения,
padding: const EdgeInsets.only(left: 20.0),
но не вторую
Ответ №1:
Я протестировал ваш код и установил crossAxisAlignment
значение столбца CrossAxisAlignment.start
. затем я добавил левое заполнение для заголовков, чтобы выровнять по левому краю виджеты кнопок переключения, как показано ниже:
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
int _currentIndex;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('sample')),
body: mybody(),
);
}
Widget mybody() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, left: 20.0),
child: Text("Unicode Character Set:"),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: ToggleButtons(
isSelected: [false, true],
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 1 '),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 2'),
)
],
),
),
SizedBox(
height: 20,
),
Padding(
padding: const EdgeInsets.only(bottom: 8.0, left: 20.0),
child: Text("Show ABCD Wrting As ::"),
),
Padding(
padding: const EdgeInsets.only(left: 20.0),
child: ToggleButtons(
isSelected: [false, true],
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' Sample 1 '),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(' ABC '),
)
],
),
),
],
);
}
}