我在比较两个字符串时遇到问题,一个带有德国特殊字符“ß”,另一个带有普通字符“ss”。我的数据库是“SQL_Latin1_General_CP1_CI_AS”排序规则,它应该比较这些字符,并且只有当我将它们作为硬编码字符串进行比较时,它才会按预期进行。但是,当我使用 cast 将它们转换为 NVARCHAR 时,它会将它们视为平等。我不明白为什么改变类型会产生影响。下面是我的例子。
import 'package:flutter/material.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
ScrollController _scrollController;
@override
Widget build(BuildContext context) {
return Scaffold(
extendBodyBehindAppBar: true,
appBar: AppBar(
backgroundColor: Colors.transparent,
elevation: 0.0,
),
body: Container(
color: Colors.blue.withOpacity(0.25),
child: ListView.builder(
itemCount: 30,
itemBuilder: (context, index) {
return Container(
color: Colors.primaries[index % Colors.primaries.length].withOpacity(0.5),
child: ListTile(
title: Text('Item $index'),
),
);
},
controller: _scrollController,
),
),
);
}
@override
void initState() {
_scrollController = ScrollController(initialScrollOffset: 100, keepScrollOffset: true)
..addListener(() {
print("offset = ${_scrollController.offset}");
});
super.initState();
}
}
void main() {
runApp(MaterialApp(home: HomePage()));
}
答案 0 :(得分:0)
我找到了解决方案。从 Nvarchar 更改为 Varchar 终于解决了这个问题。详情链接如下: